previous函数用法:只能在change事件中使用有效
- // 定义Book模型类
- var Book = Backbone.Model.extend({
- defaults : {
- name : 'unknown',
- author : 'unknown',
- price : 0
- }
- });
- // 实例化模型对象
- var javabook = new Book();
- // 监听"change:price"事件
- javabook.on('change:price', function(model, value) {
- var previous= model.previous('price');
- if(previous < value) {
- console.log('价格上涨了' + (previous - price) + '元.');
- } else if(previous > value) {
- console.log('价格下降了' + (previous - price) + '元.');
- } else {
- console.log('价格没有发生变化.');
- }
- });
- // 设置新的价格
- javabook.set('price', 50);
javabook.set("price",50);
previous = javabook.previous("price");
console.log(previous);
//输出结果为50
// 定义Book模型类
var Book = Backbone.Model.extend({
validate : function(data) {
if(data.price < 1) {
return '书籍价格不应低于1元.';
}
}
});
var javabook = new Book();
// 监听error事件,当验证失败时触发
javabook.on('error', function(model, error) {
console.log(error);
});
javabook.set('price', 0);
javabook.set('price', 0, {
silent : true
});//不会调用验证
javabook.set('name', 'Thinking in Java');//仍然进入验证
传入{silent:true}屏蔽change事件是因为没有将数据写到mode中,有利于我们的数据回滚。如何将模型数据同步到服务器
1、数据标识符:id由服务器生成并返回
2、url规则:使用pathInfo的方式,例如:model中的属性urlRoot设置为'/service',save()保存数据时路径是http://serverip/service/model_id
url的三种方式:
var Book = Backbone.Model.extend({
urlRoot:'/service',//第一种
URL:'/service',//第二种
})
javabook.save(book,{url:'/service'});//第三种方式
对服务器的数据进行同步的三个方法:save(),fetch()和destroy()方法,用法类似,可以加入success回调函数或者{wait:true}配置等等
重写parse()方法可对服务器返回的数据进行解析以适配model中的数据格式