首页 > 代码库 > backbonejs中的模型篇(一)

backbonejs中的模型篇(一)

一:模型及属性

模型是MVC应用的基石,它负责存放应用所需的数据,对数据的验证,执行访问控制,以及实现应用所需的特定业务逻辑。

backbone通过扩展Backbone.Model对象来定义一个模型。

如:var Mymodel = Backbone.Model.extend({...});

我们并不需要在模型内部定义一个数据结构,backbone支持在模型初始化时动态定义。

如: mymodeltest = new Mymodel({

    date:‘2014-08-14‘,

    name:‘joan‘,

    description:‘test‘});

1:模型复制

newmodel= mymodeltest.clone(); 得到一个模型独立的副本,此时对mymodeltest模型实例的修改不会反映到newmodel上;如果是赋值给另一个对象,则会反映到另一个对象。

2:设置默认的属性值

如: var _model = Backbone.Model.extend({

    defaults:{date:‘‘, name:‘joan‘, description:‘‘,gender:‘women‘}

})

var aaa = new  _model({

  description:‘testtest‘

});

aaa.get(‘date‘)!=undefine //true

aaa.get(‘name‘) //joan                   aaa.get(‘description‘)  //testtest

3:可用函数来设置默认属性值

如:var _model = Backbone.Model.extend({

    defaults:{name: ‘joan‘,

          description: ‘‘,

          gender: ‘women‘,

          date: function(){var date = new Date(); return date.toISOString();}}

})

4:initialize()方法

在模型对象被创建后,initialize方法立即被调用来初始化模型对象的属性值

以上defaults中的date属性也可以在initialize方法中设置

initialize:function(){

  if(!this.has(‘date‘)){var date = new Date(); this.set(‘date‘,date.isISOString());}

}

通过has方法来判断date属性是否在它之前没有被初始化过,避免将其覆盖

通过set方法来设置默认date属性

二:操作模型属性的一些专门的方法

1:get():获取属性的值

2:set():更新或者创建单个属性的值,可以一次更新多个,使用‘键-值’的格式

  如:aaa.set({name:‘saly‘,gender:‘Man‘})  如果该属性不存在,则会自动创建出该属性。设置成功,返回true,表示一个可用的模型的引用,否则false.

3:unset():从模型中删除一个属性。 如:aaa.unset(‘description‘)

4: clear(): 从模型中删除所有的属性。

5:has():检查模型中是否存在某一属性,存在返回true, 如:aaa.has(‘name‘), //true