《开始学Backbone.js》之第三章Backbone Models与Collections(五)
2015-01-10 16:24
429 查看
本文内容接上篇博客内容
Backbone提供为模型的数据提供了一个验证机制,意味着可以在模型中包含判断模型的状态是否正确的所有逻辑,而不用通过外部的JavaScript或表单处理代码。
如果提供了验证函数,那么该函数会在每次调用.save方法时执行,而且在提供了{validate:true}作为可选参数的set/unset操作过程中也会执行该验证函数。
假设我们的Book模型坚持name属性必须存在且year属性的值需是2000年以后。该规则的一个验证方法可以写成:
在操作模型的过程中如果违反这些规则,则试图修改属性值的操作将失败。
当检测到一个验证错误时,会触发一个事件。通过增加一个“invalid”事件监听,可以提供验证失败的反馈信息。和所有事件监听一样,这个应该加在initialize函数中。
如果不设置验证标识,通过set设置属性时验证函数就不会执行。然而,任何时候你都可以通过isValid()方法来检查模型是否有效。
本篇内容翻译自《Beginning Backbone.js》,原著作者James
Sugrue。
模型验证
Backbone提供为模型的数据提供了一个验证机制,意味着可以在模型中包含判断模型的状态是否正确的所有逻辑,而不用通过外部的JavaScript或表单处理代码。如果提供了验证函数,那么该函数会在每次调用.save方法时执行,而且在提供了{validate:true}作为可选参数的set/unset操作过程中也会执行该验证函数。
假设我们的Book模型坚持name属性必须存在且year属性的值需是2000年以后。该规则的一个验证方法可以写成:
Book = Backbone.Model.extend({ initialize: function(){}, defaults: function(){}, printDetails: function(){}, validate: function(attrs){ if(attrs.year < 2000){ return 'Year must be after 2000'; } if(!attrs.name){ return 'A name must be provided'; } } });
在操作模型的过程中如果违反这些规则,则试图修改属性值的操作将失败。
//试图把year属性设置为2000年之前 thisBook.set('year', 1999, {validate: true}); console.log('Check year change: ' + thisBook.get('year')); //试图从模型中移除name属性 thisBook.unset('name', {validate: true}); console.log('Check if name was removed ' + thisBook.get('name'));
当检测到一个验证错误时,会触发一个事件。通过增加一个“invalid”事件监听,可以提供验证失败的反馈信息。和所有事件监听一样,这个应该加在initialize函数中。
Book = Backbone.Model.extend({ initialize: function(){ this.on('invalid', function(model, error){ console.log('**Validation Error : ' + error + '**'); }); } });
如果不设置验证标识,通过set设置属性时验证函数就不会执行。然而,任何时候你都可以通过isValid()方法来检查模型是否有效。
//检查模型是否有效 console.log('Is model valid: ' + thisBook.isValid()); //在不使用验证标识情况下破坏有效性规则 thisBook.set('year', 1998); //检查模型是否有效 console.log('Is model valid: ' + thisBook.isValid());
本篇内容翻译自《Beginning Backbone.js》,原著作者James
Sugrue。
相关文章推荐
- 《开始学Backbone.js》之第三章Backbone Models与Collections(三)
- 《开始学Backbone.js》之第三章Backbone Models与Collections(六)
- 《开始学Backbone.js》之第三章Backbone Models与Collections(一)
- 《开始学Backbone.js》之第三章Backbone Models与Collections(七)
- 《开始学Backbone.js》之第三章Backbone Models与Collections(四)
- 《开始学Backbone.js》之第三章Backbone Models与Collections(二)
- Backbone.js 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构
- Backbone.js 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构
- backbone为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构
- Backbone.js(二)集合Collections
- js获得本周,本月,本季度的开始日期和结束日期
- js获得本周,本月,本季度的开始日期和结束日期
- Js倒计时代码,当鼠标离开页面与回到页面会自动停止与开始
- js验证开始和结束日期
- 让我们用Backbone.js来写一个HelloWorld程序。
- 开始读《Data Structures and the Java Collections Framework》
- 蛋疼地开始学JS原型,prototype,试着写一个小小的伸缩框
- JavaScript 相关 —— 向页面写JS以alert信息、通过对地址栏赋值转到指定页、注册Js到Body的开始部分、注册Js到Body的结束位置
- JS 比较开始日期是否大于结束日期
- MVC轻量级的js库:BackBone.js