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+1
model = {}
d = ''
@request.on 'data',(chunk) -> d += chunk
@request.on 'end', =>
obj = JSON.parse d
console.log obj
model = {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 data
if each.id.toString() is @id
data.splice i,1
@json id:@id @put '/data/:id', ->
d = ''
@request.on 'data',(chunk) -> d += chunk
@request.on 'end', =>
obj = JSON.parse d
console.log obj.name
for each, i in data
if each.id == obj.id
each.name = obj.name
each.gender = obj.gender
each.subject = obj.subject
each.score = obj.score
@json each
四:实现页面效果

以上实现了一个简单增删改的实例,练习了backbonejs mvc框架的使用。有些描述是自己的理解,有不正确的地方望大伙指正。
backbonejs mvc框架的增删查改实例的更多相关文章
- SSH2 增删查改实例
(一)引入包 (共73个,不一定都需要,但是我的项目是这么多,经过调试,没有包冲突) (二)创建数据库表 建立数据库octtest,并创建user表,表里面一共4个字段:id,姓,名,年龄. 语句如下 ...
- (新)自己动手写ORM框架(1)-增删查改的使用
之前写过一个系列文章自己动手写ORM框架,经过在多个项目的中的使用,对这套代码进行了许多改进,下面是使用方法: 新增学员信息代码预览: DBHelper db = DBHelper.getInstan ...
- [转].NET MVC 分页以及增删查改
本文转自:http://blog.csdn.net/sust2012/article/details/30761867 . 数据库操作,DAL 层: using System; using Syste ...
- Yii框架基础增删查改
返回一条数据 Country::find()->one(); 返回所有数据 Country::find()->all(); 返回记录的数量 $country =Country::find( ...
- elasticsearch的python增删查改实例分析
Reference: http://bigg.top/2015/11/29/elasticsearch%E7%9A%84python%E5%A2%9E%E5%88%A0%E6%9F%A5%E6%94 ...
- backbonejs mvc框架
backbonejs mvc框架的增删查改实例 一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https ...
- 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- knockout+MVC+webapi+sqlserver完成增删查改
快过年了,公司的事情较少,想着开始学习点新东西.这段时间一个项目用到了mvc和webapi,然后一直对knockout比较感兴趣,就想着用这个框架做一个小实例.数据库采用的是sqlserver.话不多 ...
- 在MVC中使用泛型仓储模式和依赖注入实现增删查改
标签: 原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository ...
随机推荐
- Monkey学习(3)如何在Android模拟器中安装apk
1.运行SDK Manager,选择模拟器,并运行模拟器,我这里用的是已经配置好的模拟器“RedMI” 2.已启动好的模拟器“RedMI” 3.记住需要安装apk文件的位置,我这里放在了F盘的根目录下 ...
- Could not initialize class sun.awt.X11GraphicsEnvironment
报错:
- CodeForces 185A 快速幂
一开始找矩阵快速幂的题来做时就看到了这题,题意就是让你求出如图所示的第n个三角形中指向向上的小三角形个数.从图中已经很容易看出递推关系了,我们以f[n]表示第n个大三角形中upward的小三角形个数, ...
- sqlserver 2008 服务器拒绝连接;拒绝访问指定的数据库
sqlserver配置管理器----sqlserver网络配置 --- 启用 named pipes OK 由于之前的程序是SQL2000开发的,迁移到SQL20008出了这个问题. 二 和主题没有什 ...
- java中如何把后台数据推送到页面上 【后续编辑】
https://my.oschina.net/yongqingfan/blog/535749 http://www.blogjava.net/BearRui/archive/2010/05/19/fl ...
- 转:内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[C++][内存管理][转载]
内存区划分.内存分配.常量存储区.堆.栈.自由存储区.全局区[C++][内存管理][转载] 一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放 ...
- Spring Boot修改内置Tomcat端口号 (zhuan)
http://blog.csdn.net/argel_lj/article/details/49851625 ********************************************* ...
- hiho_99_骑士问题
题目大意 给定国际象棋8x8棋盘上三个起始点,三个骑士分别从三个起始点开始移动(骑士只能走日字,且骑士从任意一点出发可以走遍整个棋盘).现要求三个骑士汇聚到棋盘上某个点,且使得骑士到达该点所移动的次数 ...
- php学习注意点
1 多阅读手册和源代码 没什么比阅读手册更值得强调的事了–仅仅通过阅读手册你就可以学习到很多东西,特别是很多有关于字符串和数组的函数.就在这些函数里面包括许多有用的功能,如果你仔细阅读手册,你会经常发 ...
- AD组策略添加本地账号、设置允许ping回显
AD组策略添加本地账号 1. 管理工具--组策略管理--选择相应GPO(编辑)----首选项--控制面板设置--本地用户和组--右键添加账号 2.域成员计算机刷新组策略(gpupdate/force) ...