嗨,我是Backbonejs的新手,
我在尝试一个示例时遇到了一个问题http://addyosmani.github.com/backbone-fundamentals/#validation
我已经创建了一个模型为myTodo和myTodo1的2对象,
如果我像这样调用set函数,它返回完成:由于验证错误而返回false
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。基本上,在第二个示例中,您在没有验证的情况下设置了2个属性。
在任何情况下,您都不能希望在之后进行验证,因为您的属性已经设置好了。
编辑:
但是,我不知道在为validate属性设置新值时的行为。但您肯定是在用布尔值覆盖验证函数。这肯定会导致意外行为。
编辑2:
好吧,我想这是我最后一次尝试了。
myTodo1.set({completed:true});
myTodo1.set({validate:true});
也相当于:
myTodo1.set({completed: true}).set({validate: true});
但在任何情况下均不等同于:
myTodo1.set({completed: true}, {validate: true});
在最新版本中,{valester: true}
告诉Backbone在模型上应用验证函数。
在前者中,只将completed属性设置为true,而不通知模型进行验证。然后再次将validate属性设置为true,而不通知模型进行验证。因此,基本上,您从不让模型进行验证。
问题内容: 我正在尝试使用jQuery和Ajax,并且使用了这种方法。但是我收到错误$ .toJSON不是firebug中的函数。问题出在哪里?我使用jquery 1.3.2。谢谢 问题答案: 没错 没有功能:http : //api.jquery.com/jQuery.toJSON。也许您想使用它。
问题内容: 我被困在保留关键字“ this”的错误上。在下面的我的React Component中,我将状态从我的主要组件“ App.js”传递到了“ RecipeList.js”组件,然后映射数据并呈现每个RecipeItem组件。我只是不明白为什么我会收到此错误 React.js-语法错误:这是保留字 该错误在render return方法内的RecipeList中调用。如果有人可以帮助,那就
在连续情景中,我们不得不处理函数的集合和函数的系集。由函数集的名字可以看出,它就是一组函数,通常是一个变量——时间的函数。为描述函数集,我们可以给出集合中各种函数的显式表达式,也可以给出只有集合中的函数才拥有的性质。下面是一些示例: 由以下函数组成的集合: 。 的每个具体值确定了集合中的一个特定函数。 一个由时间函数组成的集合,其中包含频率不超过W周期/秒的所有时间函数。 一个由带宽局限于W、幅度
我得到了一个错误:这个$情态动词模态不是一个函数 我通过gulp文件从wwwroot文件夹中的Node_模块获得了ng2-bs3-modal。 我的文件夹结构是: 如果我将ng2-bs3-modal移动到脚本(typescript)文件夹,它将提供jasmin区域。js错误。在上面的结构中,我得到了“this.$modal.modal不是函数”错误,因为ng2-bs3-modal中的所有类型脚本都
问题内容: 我正在尝试编写示例AngularJS和SpringMVC项目。spring方法可以正常工作,但是我的站点控制器中的函数声明存在问题。我的应用应该从文本输入中返回一个单词,但是当我单击按钮时,出现了以下错误: 这是我的index.html: 和controller.js: 我注意到,这一定是ng-click值中的函数声明存在某种问题。在现场启动时,controler.js可以正常运行,但
问题内容: 我已经建立了一个工厂来处理我的控制器的功能,但是不知何故,控制器会在其中一个功能上返回错误: 错误:Auth.getUser(…)。成功不是函数@ http:// localhost:8080 / app / controllers / mainCtrl.js:10:1 … 我不知道这是怎么回事,其余功能似乎工作正常? 主控制器: 问题答案: 请参阅$ http服务文档中的 “ 弃用声