backbone学习笔记一(model)

本文详细介绍了JavaScript中Backbone.js模型类的使用方法,包括`previous`函数的使用场景,`validate`验证机制,`silent`配置的用途,以及如何将模型数据同步到服务器的三种方式和三个方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

previous函数用法:只能在change事件中使用有效

  1. // 定义Book模型类  
  2. var Book = Backbone.Model.extend({  
  3.     defaults : {  
  4.         name : 'unknown',  
  5.         author : 'unknown',  
  6.         price : 0  
  7.     }  
  8. });  
  9.   
  10. // 实例化模型对象  
  11. var javabook = new Book();  
  12.   
  13. // 监听"change:price"事件  
  14. javabook.on('change:price'function(model, value) {  
  15.     var previous= model.previous('price');  
  16.   
  17.     if(previous < value) {
  18.         console.log('价格上涨了' + (previous - price) + '元.');  
  19.     } else if(previous > value) {  
  20.         console.log('价格下降了' + (previous - price) + '元.');  
  21.     } else {  
  22.         console.log('价格没有发生变化.');  
  23.     }  
  24. });  
  25. // 设置新的价格  
  26. javabook.set('price', 50);  
若不是在change事件中,则无效,例如:

javabook.set("price",50);
previous = javabook.previous("price");
console.log(previous);
//输出结果为50


validate验证

// 定义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);


silent配置:传入{silent:true}能够屏蔽change,validate验证等事件,但是仅仅针对于本次操作,比如:

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中的数据格式


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值