标签:
原文: Build a Contacts Manager Using Backbone.js: Part 5
这是这系列教程最后一部分了. 之前所有的增删改都在前端完成. 这部分我们要把Contact的数据存储到数据库里.
在这里我们需要一个Web服务器,还有一个数据库. 可以是SQLServer.我们需要在
数据库中创建一个表来存储Concat. 表还要有一个主键ID,最好这个ID是unique和
自增长类型的. 虽然现在我们的Concat model里没有这个属性但是要把它存储到数
据库里ID还是有必要的.
sync是Backbone.js提供给我们和服务器沟通的模块. 这是我们唯一还没用到的重要模块.
理解它后我们就可以完整的了解Backbone.js的整个框架.
调用sync()方法可以向服务器发送一个请求. 假设这个方法是通过调用JQuery或者Zepto来执行的请求.
又假设一个RESTful接口在后台使用POST,PUT,GET,DELETE,HTTP等方法.就像我们看到的,Backbone
能够用在headers中加入预处理动作的方法来配置GET,POST方法的回调函数(我觉得应该是call back他写错了).
除了直接调用sync(),models和collections也有方法可以用来和数据库通信. models有destory(),fetch(),
parse()和save()方法, collection有fetch()和parse()方法.不管是models还是collections的destroy(),fetch()
和sync()方法性能都不如sync().parse()方法在服务器返回数据后自动调用. 默认不做任何操作只是返回数据库
响应,但是你重写它来添加你希望在服务器响应前做的操作.
让model数据显示到页面中的方法依赖后台技术.Backbone官方文档中collection的fetch()方法提到,这个方法不
能在页面初始化的时候从服务器请求数据.这部分在精华问答区有提到,一个页面在所有必需的模块没有完全载入前
应该避免初始化AJAX请求.当我们还不清楚一件事的时候听从别人的建议是比较好的主意.这会让我们的应用程序更
加稳定.让model数据显示到页面中的方法依赖后台技术.我们在这个例子里要使用.net技术. 所以需要创建一个<script>
标签来动态加载需要的js模块到页面里.做完这些后我们要开始把原来的index.html改成index.aspx. 当然我也也
需要index.aspx.cs存放后台代码.但是这会产生一个问题.在ASPX页面中使用Underscore微模版.我们可以把
Underscore文档中的Mustache-style例子直接拿来用.现在的问题是Underscore的模版使用<%=作为指定的占位符
来代替实际数据.这和ASPX页面.net代码使用的一样.Underscore的模版我们在ASPX页面里运行会报出服务器错误.
很幸运有几种办法能解决这个问题,其中最简单的是在模版中修改使用占位符的语法.
Underscore提供的templateSettings这个属性就是为了解决这样的问题的.他能够很容易的用指定的正则表达式来替
换成我们希望的符号.实际上我们可以直接拿‘Mustache-style这个例子来用,在app.js文件开始(在闭包内)我们只要加入
以下代码:
_.templateSettings = { interpolate: /\{\{(.+?)\}\}/g };
所有这些支持一个正则表达式方法interpolate, 它允许我们使用{{property}}这个语法还替换<%= property%>
为此我们必须把所有原来的模版的标签替换成新的语法.尽管这和我们原来用的模版变化比很大, 至少我们现在可以用
Underscore了.我们对于Javascript使用<%的地方可以使用用<%-来转换数据.如果我们准备使用这些在我们的模版
里来替换interpolate属性. 我们应该也要配置Underscore里的evaluate和escape.属性.
我们现在要考虑在页面初始化渲染的时候怎么样把model数据从数据库中如何取到我们的页面中来.我们能很容易的在
ASPX的类文件中加入一个简单的方法. 从数据库中读取记.创建一个对象列表. 每个对象能够表示一个联系人.我们接下
来把数据转化为Javascript数据类型并且插入到页面中.
标签:
原文地址:http://www.cnblogs.com/dangkei/p/5053613.html