Backbone 学习笔记五

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()

返回模型的上一个属性散列的副本。。用于比较模型不同版本的区别,或者回滚模型状态。。

原文地址:https://www.cnblogs.com/yushunwu/p/Backbone.html