validate model.validate(attributes)
未定义,需要时重载。
它在set 和 save 之间执行,并传入待更新的值。
如果模型和属性通过验证,不返回任何值,否则,返回一个可选择的错误。错误信息或error对象。将阻止set 或save 的执行 ,并触发error事件
var Chapter = Backbone.Model.extend({
validate:function(attrs) {
if(attrs.end < attrs.start) {
return "can't end before it starts";
}
}
});
var one = new Chapter({
title: "chapter One : The Beginning"
});
one.bind("error",function(model,error){
alert(model.get("title") + " " + error );
});
one.set({
start:15,
end : 10
});
error 事件对模型和集合级别提供粗粒度的错误信息很有帮助,但如果想设计更好的处理错误的特定试图,可以传入error回调函数重载事件
account.set({access:"unlimited"},{
error:function(model,error) {
alert(error);
}
});
url model.url()
返回模型资源在服务器上位置的相对URL。
可以重载该方法。形式/[collection.url]/[id] 如果不是集合的一不分,/[urlRoot]/id
在[collection#url]的URL,确定它是否定义过,或者所有模型共享通用根URL时,是否存在urlRoot属性。
urlRoot model.urlRoot
如果使用的集合外部的模型,通过指定urlRoot来设置生成基于模型id 的URLs的默认url 函数
var Book= Backbone.Model.extend({urlRoot:'/books'});
var solaris = new Book({id:"10083-len-solaris"});
alert(solaris.url());
parse model.parse(response)
会在通过fetch 从服务器返回模型数据,以及save时执行。接受参数为response对象,为可以set 到模型的属性散列表
clone model.clone()
返回与模型属性一致的新的实例
isNew model.isNew()
模型是否已经保存到服务器。如果模型尚无id,则是新的 有无id
chagen model.change()
手动触发change事件,如果已经set函数传入选项参数{slient:true},可以手动的调用mode.change
hasChanged mode.hasChanged()
标识模型从上次change 事件后是否改变过,
book.bind("change",function(){
if(book.hasChanged("title")) {
}
changedAttributes mode.changedAttributes([attribute])
仅获取模型属性已改变的散列表,还可以传入外来的attributes散列,返回该散列与模型不同的属性。
可用于视图的哪个部分已更新,或者确定那些需要与服务器同步
previouse mode.previous(attribute)
在change 事件,该方法可以获得属性的旧值
var bill = new Backbone.Model({
name: "fdff";
})
bill.bind("change:name",function(model,name){
alert("名字已从"+bill.previouse("name") + "改为 " + name );
});
bill.set({name:"一会"});
previouseAttributes model.previouseAttributes()
返回模型的上一个属性散列的副本。。用于比较模型不同版本的区别,或者回滚模型状态。。