Model通过RESTful同步
[1] urlRoot声明
- RESTful资源位置有两种形式:/task 和 /task/id,urlRoot是第一种形式,第二种形式backbone会自动做url的构造
[2] save方法
- 没有id,使用POST请求,有id使用PUT或PATCH请求。
var Task=Backbone.Model.extend({
urlRoot: 'http://test.com/api/task'
});
var task = new Task({
'identify’:'p_chou',
'title': 'course1',
'description': 'course1 des'
});
1) POST
- save方法默认使用POST请求,当调用完save方法,服务器会返回id,backbone的机制会做自动同步(如果出了id还返回了其他字段,也会同步)。
2) PUT
- Backbone自动把id拼接到URL后面
- 会把所有属性传上去,服务器端获得并一次性更新掉。
3) PATCH
- 只更新一部分。
- 第一个参数可以用.changed获得当前(save之前)哪些属性发生了变化
[3] destroy方法
1) DELETE
2) ‘destroy’事件
task.on('destroy',function(){
console.log('task deleted.');
});
[4] fetch方法
1) GET
- 从服务器端拉取数据,并更新Model
[5] defaults默认属性
var Task=Backbone.Model.extend({
//定义默认属性
defaults:{
identify: 'p_chou'
},
urlRoot: 'http://rapit.sinaapp.com/api/task'
});
[6] urlRoot规则
1)默认id规则
- urlRoot只需指定/task这种形式的接口地址。Backbone会根据Model自身是否含有id属性,若有save方法,使用PUT或PATCH请求,若没有使用POST请求。destroy和fetch方法都依赖于id。
- 若唯一标识不是id,可定义
var Task=Backbone.Model.extend({
//定义唯一标识
idAttribute:'guid',
//定义默认属性
defaults:{
identify: 'p_chou'
},
urlRoot: 'http://rapit.sinaapp.com/api/task'
});
2)通过定制’url’属性改变默认规则
- 若设计的接口不是这种形式,可以将url重写
[7] sync事件
- 只要和服务器端交互,都会调用该事件
task.on('sync',function(){
console.log('task sync');
});