《开始学Backbone.js》之第三章Backbone Models与Collections(二)

       本篇内容翻译自《Beginning Backbone.js》,原著作者James Sugrue。转载请注明相关信息。

 

       本文内容接上篇博客内容

 

   Model属性

      鉴于数据是创建一个模型的主要原因,现在让我们首先来关注属性。这部分内容涵盖了你在使用Backbone.Model时所有与属性相关的操作。

 

   获取属性值

      任何模型对象中的属性可以通过向.get方法传入所需读取的属性名简单地获取。因为我们使用的是简单的默认值,在初始化Book对象后,下面这行代码将输出“Book Title”。

console.log(myBook.get('name'));

 

      在对象创建过程中,可以向模型中的属性传值,这样可以让每一个实例对不一样。

var thisBook = new Book({
    name: 'Beginning Backbone', 
    author: 'James Sugrue'
});

 

      现在读取两个属性中的任何一个属性值时,创建时传入的值将替代默认值。

console.log(thisBook.get('name') + ' by ' + thisBook.get('author'));

 

      你还可以通过使用.attributes属性以JSON对象的形式来读取模型中的所有数据。

console.log(thisBook.attributes); //以JSON的形式表示所有属性

 

   修改属性值

      在构造函数外修改属性值可以通过类似的方法,通过函数调用的方式,函数格式为.set('<变量名>', <值>)。如,修改书的name属性,可以用:

thisBook.set('name', 'Beginning Backbone.js');

 

      还可以用上面的方式向对象中添加新的属性。

thisBook.set('year', 2013); //创建一个新的名为year的属性

 

   删除属性

      有时你想删除模型中一些没用的属性。下面这个例子中,将新增一个属性随后将其删除。第二个console.log语句将得到属性返回值undefined的结果。

thisBook.set('year', 2013);
console.log('Book year ' + thisBook.get('year'));
thisBook.unset('year');
console.log('Book year ' + thisBook.get('year'));

 

      Backbone提供一种简洁的方式来检查模型中是否包含某个属性,使用.has方法,该方法返回布尔值。

//检查某个属性是否存在
var hasYear = thisBook.has('year');  //结果是false
var hasName = thisBook.has('name');  //结果是true
console.log('Has an attribute called year : ' + hasYear);
console.log('Has an attribute called name : ' + hasName);

 

      还可以通过使用clear方法删除模型中的所有属性。

//创建一个对象
var newBook = new Book({
    name: 'Another Book',
    author: 'You'
});
newBook.clear();  //删除所有属性
console.log('Has an attribute called name : ' + newBook.has('name')); //结果是false

 

      unset和clear方法还可以接受一个额外的options参数对象,可以将其设置成布尔值,用以表明操作完成时是否触发模型的change事件。在本章后续的“模型事件”部分将解释这些事件的原理。

thisBook.unset('year', {silent: true});

    

   克隆模型

      通常你会想复制一份Backbone模型,并且保持所有同样的属性。不用担心怎样创建深度复制的细节,你只需简单地使用.clone方法便可创建一个克隆的模型实例。

var clonedBook = thisBook.clone();

 

你可能感兴趣的:(Collections)