您好我是新来的backbonejs的一个bug,这是设置backbonejs功能
我也遇到过,而我是想的http://addyosmani.github.com/backbone-fundamentals/#validation
一个例子,我已经创建了模型的2物体,myTodo和问题myTodo1,
如果我叫设置这样的功能,它返回完成:虚假由于验证错误
var myTodo = new Todo(); myTodo.set('completed', true, {validate: true}); console.log("completed: "+myTodo.get('completed')); /* The above code returns following log: This model has been initialized. Remember to set a title for your todo. completed: false */
为什么买验证是不是下面的代码
var myTodo1 = new Todo(); myTodo1.set('completed',true); console.log("completed: "+myTodo1.get('completed')); myTodo1.set({validate:true}) console.log("completed: "+myTodo1.get('completed')); /* The above code returns following log: This model has been initialized. underscore-test2.js:11 completed: true underscore-test2.js:28 completed: true */
虽然这两个组的代码做同样的工作执行上执行的,但在第一种情况下执行验证,但不是在第二种情况下
为什么?????
下面是完整的示例代码。
var Todo = Backbone.Model.extend({ defaults: { completed: false, }, validate: function(attribs){ if(attribs.title === undefined){ return "Remember to set a title for your todo."; } }, initialize: function(){ console.log('This model has been initialized.'); this.on("invalid", function(model, error){ console.log(error); }); this.on('change:title', function(){ console.log('- Values for title have changed.'); }); } }); **var myTodo = new Todo(); myTodo.set('completed', true, {validate: true}); console.log("completed: "+myTodo.get('completed'));** **var myTodo1 = new Todo(); myTodo1.set('completed',true); console.log("completed: "+myTodo1.get('completed')); myTodo1.set({validate:true}) console.log("completed: "+myTodo1.get('completed'));**
'myTodo1.set({validate:true})'将一个名为'validate'的属性设置为true。试试'myTodo1.set({validate:'hello!'}); console.log(myTodo1.get('validate'));'在你的代码中,你会发现这与运行你的validate函数无关。 – 2013-04-06 22:37:38