本篇内容翻译自《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();
相关推荐
Starting with Models and Collections, you'll learn how to simplify client-side data management and easily transmit data to and from your server. Next, you'll learn to use Views and Routers to ...
Backbone 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESTful ...
主要提供了3个东西:1、models(模型) 2、collections(集合) 3、views(视图) backbone.js文件本身很小,压缩后只有5.3KB,作为一个框架级别的核心JS文件,这个数字很可怕。 除此之外,这个JS还必须依赖于另一个JS文件...
它通过Models数据模型进行键值绑定及custom事件处理,通过模型集合器Collections提供一套丰富的API用于枚举功能,通过视图Views来进行事件处理及与现有的Application通过JSON接口进行交互。 简而言之,Backbone是...
Mast带来了来自诸如Knockout和Angular之类的框架的一些更重要的贡献,并允许您使用Backbone Models,Collections和Views来利用它们,并着眼于为中型到大型团队进行切实有效的开发。 它并非旨在取代Angular之类的...
Backbone 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESTful ...
Tadpole 是基于backbone.js 构建的项目的样板脚手架。 它旨在通过提供包括强大的生成器、gulp.js 自动化、包管理等开箱即用的样板来启动主干应用程序开发。 包括以下内容: 使用命令行生成器和自动化。 使用和包...
一个Backbone.js和Require.js样板,它促进将JavaScript解耦到模块中,使用Collections / Models和Views将业务逻辑与应用程序逻辑分离,在使用移动框架(jQuery Mobile)的同时在桌面和移动Web版本之间重用JavaScript...
Backbone.js为复杂WEB应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESRful JSON接口...
backbone.js提供了一套web开发的框架,通过Models进行key-value绑定及custom事件处理,通过Collections提供一套丰富的API用于枚举功能,通过Views来进行事件处理及与现有的Application通过RESTful JSON接口进行交互....
Backbone 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESTful ...
Bookshelf遵从和Backbone.js一样棒的Models和Collections思想,使用相同的模式、命名惯例和哲学构建轻量、易于操控的ORM。如果你已经了解Backbone,你就知道如何使用Bookshelf.示例:var knex = require('knex')...
gem 将包括Backbone.js (带有依赖项)和用于模板化的Handlebars.js 。 包含用于编译 Handlebars 模板并利用 Asset Pipeline 帮助保持您的模板良好和有条理。 它还构建了一个简单的目录结构来帮助组织您的 Backbone...
Backbone 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESTful ...
Backbone.js为复杂WEB应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESRful JSON接口...
Backbone 为复杂Javascript应用程序提供模型 models 集合 collections 视图 views 的结构 其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数 并通过RESTful JSON接口...
Backbonejs入门教程 Backbone 为复杂Javascript应用程序提供模型 models 集合 collections 视图 views 的结构 其中模型用于绑定键值数据和自定义事件
bbstarter Drupal 主干应用程序的启动器...文件结构 app/ source files css/ js/ models/ backbone models, each as it's own file collections/ backbone collections views/ backbone views app.view.js master view
项目入门模板 配置package.json并安装软件包: sudo npm install ...ln -sf ../models ln -sf ../collections 也许更新萨斯 gem update sass 使用Bower软件包? 请参阅.bowerrc文件 bower init ### ### NPM:
║ Dispatcher ║──────>║ Models/Collections ║──────>║ Views ║ ╚════════════╝ ╚════════════════════╝ ╚═══════╝ ^ │ └──────────...