backbonejs mvc框架的增删查改实例
一:开发环境
coffeescript和nodejs需要先安装,没装网上自己查安装步骤。
代码编写环境及esp框架下载:
esp框架下载地址:https://github.com/nonocast/esp.git
在下载目录执行安装命令:npm install esp
这样开发环境就已经安装好了。
二:backbonejs 增删查改实例代码
backbonejs的学习可以网上下载电子书“backbonejs的入门教程”,及http://backbonejs.org/官网上学习
1:html部分
结构是由一个编辑模版和一个table行模版组成。
body ->div 'header', -> 'BACKBONEJS MVC DEMO'div 'add-block', ->input type:'button',id:'addbtn',value:'添加'span id: "showblock", style:'display:none;', ->text '姓名:'input type:text,id:'a-name'text '性别:'input type:text,id:'a-gender'text '科目:'input type:text,id:'a-subject'text '成绩:'input type:text,id:'a-score'input type:'button',id:'savebtn',value:'保存'table ->caption '学生成绩汇总列表'tr ->th style:'width:10%;', -> '编号'th style:'width:15%;', -> '姓名'th style:'width:15%;', -> '性别'th style:'width:15%;', -> '科目'th style:'width:15%;', -> '成绩'th style:'width:20%;', -> '操作'script type:'text/template',id:'trtemplate', ->tr 'tr<%=id%>', ->td 'id<%=id%>', -> '<%=id%>'td 'name<%=id%>', -> '<%=name%>'td 'gender<%=id%>', -> '<%=gender%>'td 'subject<%=id%>', -> '<%=subject%>'td 'score<%=id%>', -> '<%=score%>'td 'do', ->a id:'tredit<%=id%>', href:'#',->'编辑'a id:'trdelete<%=id%>', href:'#',->'删除'script type:'text/template',id:'edittemplate', ->tr 'tr<%=id%>', ->td 'id', ->'<%=id%>'td 'name', ->input 'name<%=id%>',type:'text',value:'<%=name%>'td 'gender', ->input 'gender<%=id%>',type:'text',value:'<%=gender%>'td 'subject', ->input 'subject<%=id%>',type:'text',value:'<%=subject%>'td 'score', ->input 'score<%=id%>',type:'text',value:'<%=score%>'td 'do', ->a id:'save<%=id%>', href:'#',->'确认'
2:js mvc框架部分
M---model(类结构)
C----collection(数据集合)
V----View(页面级别的,与页面绑定,事件的绑定等)
Model的defaults可以是一些默认的类型结构,也可以什么默认结构都没有,自己在使用过程中定义类型结构,在Model模块中主要是为了某个属性发生变化时触发所绑定的事件功能。
在Collection模块中,url主要是与后台交互的接口,所有的数据交互都通过此url,提交的数据带有id的此框架会自动转为PUT协议, 没有id的新增数据为Post协议,挺奇怪的吧
model表明该Collection是上面$model类型结构的集合
View模块中,el:表明该页面级要操作的元素的区域,最大也就为body了。在view中操作的元素都需要包含在此el中,有点象作用域
events:此处元素事件绑定,注:此处绑定的事件需要涉及的dom元素在执行到该处时就已经载入,比如模块中的编辑删除按钮就不能在这里绑定事件,因为这些按钮在view初始化后的构造函数中render才呈现出来,此时绑定会找不到这些元素。
that = @ @为this指针,this指向当前的view,在很多地方用到该句来备份指针,目的是在单击等事件里的指针会发生变化,会指向当前的元素,用that以便能调用view内定义的方法.
新增一条记录时,需要手动加入到collection里面,再提交到后台,可以用collection.create新增记录,也可以通过model来创建一条记录,然后手动添加到collection,此时需要走model的url来save,而不是collection的url来save,如下:
saveclick: ->that = @ #此处的备份指针,以便能调用view内定义的方法,在单击等事件里的指针会发生变化,指向当前的元素#n =new $model 通过model创建的数据保存到后台之后(需要走model里的url到后台),需要在collection手动加入该条记录,而通过collction先创建这条记录(走collection#的url到后台),不需要再手动添加@collection.create {name:$("#a-name").val(), gender:$("#a-gender").val(),subject:$("#a-subject").val(),score:$("#a-score").val()},success:(mod,res) ->e = _.template $("#trtemplate").html()$("table").append(e mod.attributes)i = mod.get "id"$("#tredit"+i).click ->that.editclick i$("#trdelete"+i).click ->that.deleteclick i$("#showblock").css("display","none")error: ->alert 'error'
三:esp后台代码
esp = require 'esp' esp.route ->data = []data.push {id:1,name:'测试1',gender:'male',subject:'语文',score:'80'}data.push {id:2,name:'测试2',gender:'male',subject:'数学',score:'90'}data.push {id:3,name:'测试3',gender:'male',subject:'英语',score:'88'}data.push {id:4,name:'测试4',gender:'male',subject:'语文',score:'70'}data.push {id:5,name:'测试5',gender:'male',subject:'数学',score:'90'}@get '/', ->@view 'home'@get '/data', -> @json data@post '/data', ->i = data[data.length-1].id+1model = {}d = ''@request.on 'data',(chunk) -> d += chunk@request.on 'end', =>obj = JSON.parse dconsole.log objmodel = {id:i,name:obj.name,gender:obj.gender,subject:obj.subject,score:obj.score}data.push model@json model@delete '/data/:id', ->for each, i in dataif each.id.toString() is @iddata.splice i,1@json id:@id@put '/data/:id', ->d = ''@request.on 'data',(chunk) -> d += chunk@request.on 'end', =>obj = JSON.parse dconsole.log obj.namefor each, i in dataif each.id == obj.ideach.name = obj.nameeach.gender = obj.gendereach.subject = obj.subjecteach.score = obj.score@json each
View Code
四:实现页面效果
以上实现了一个简单增删改的实例,练习了backbonejs mvc框架的使用。有些描述是自己的理解,有不正确的地方望大伙指正。
转载于:https://www.cnblogs.com/Joans/p/3365432.html
backbonejs mvc框架的增删查改实例相关推荐
- android增删功能代码,Android SQLite增删查改实例代码部分
在 Android与SQLite数据库 这个专题里我们谈到了 SQLite 的基本应用,但在实际开发中,为了能够更好的管理和维护数据库,我们会封装一个继承自 SQLiteOpenHelper 类的数据 ...
- 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- TP框架增删改查需要掉ajax么6,TP6框架--EasyAdmin学习笔记:实现数据库增删查改
这是我写的学习EasyAdmin的第三章,这一章我给大家分享下如何进行数据库的增删查改 上一章链接:点击这里前往 上一章我们说到,我仿照官方案例,定义了一条路由goodsone和创建了对应数据库,我们 ...
- JAVA原生mvc实现用户信息的增删查改
笔者最近学完jsp和servlet,于是心血来潮的打算写个简单的用户案例 环境准备: 开发工具eclipse jdk-1.8.0_72 tomcat-9.0.5 前端部分: 1.自己手写了一套样式 2 ...
- django mysql开发_基于django框架web项目实战开发四 django+mysql实现增删查改功能
第一步:编写增删查改功能代码 打开项目myweb目录下view.py, 并编写以下代码 view.py from django.shortcuts import render, redirect fr ...
- MERGE批量增删查改数据
MERGE优点: 在批量处理数据的时候,我可以用到merge一次完成数据处理. 示例代码一: MERGE INTO student AS t using (SELECT '丽水' AS NAME,20 ...
- Django:数据库表的建立与增删查改(ForeignKey和ManytoMany)
数据库表的创建: 1.Django工程项目建立,基础环境调试. 2.创建表 from django.db import models class Publisher(models.Model): ...
- winform调用webservice增删查改_教你分别用数据库与云函数实现“增删查改”
导语 数据库 API 与云函数"增删查改"的姿势有何不同?对比代码差异往往有助于更好的理解,本文用详细代码帮你寻找答案并巩固基础! ▌一.云开发初始化 wx.cloud.init( ...
- java调用js查询mongo_MongoDB增删查改操作示例【基于JavaScript Shell】
本文实例讲述了MongoDB增删查改操作.分享给大家供大家参考,具体如下: MongoDB自带了一个JavaScript Shell,所以在其中使用js语法是可以的. Insert操作: 单条插入 v ...
最新文章
- 计算机专业的第二批本科大学,我校22个专业入选第二批一流本科专业建设“双万计划”...
- 银盛通信与深圳邮政达成合作,全城线下代办点突破1000家
- 关于leetcode第K个最大元素的几种解法
- 网络配置之ifconfig及Ip命令详解
- linux shell的二级菜单,linux shell编程之菜单选择(一)
- 华为云DevCloud重金悬赏,开发者大赛等你来战!
- Product mass creation tool
- “70后”清华教授,任大学校长
- 叫做 Nanshan即时通讯 贪婪型
- Jenkins部署java项目实例
- Poj 1324 Holedox Moving 状压判重+BFS
- android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】...
- AD09由英文改中文菜单步骤
- 2021年N1叉车司机找解析及N1叉车司机考试试卷
- WXGA TFT和XGA TFT的区别
- HMM模型 forward backward viterbi算法
- AliCDN,盛开在云端的花朵
- ERP的工单(MO)
- 安卓productFlavors多渠道打包简单使用
- 架构集一---语音连麦聊天室实现方案分析
热门文章
- matlab语音去除白噪声_全国首款“AI语音电梯”亮相海淀医院、北医三院
- ibm量子计算机科学家,量子计算机比传统计算机更具优势?IBM科学家这样说……...
- oracle 自身连接查询,Oracle 连接查询
- linux mtu日志,linux MTU调整
- matlab摩擦阵子,用simulink仿真lugre摩擦模型时出现错误该如何解决。
- 红米有android,这些是不支持ANDROID 11更新的小米和红米手机
- Android SDK中tools详解
- oracle12cr2发布时间,Oracle 12cR2 发布在即
- gif提取 python_编写Python爬虫抓取暴走漫画上gif图片的实例分享
- kmeans算法学习2