【发布时间】:2012-12-30 22:54:46
【问题描述】:
我想知道为什么当我将模型添加到集合时,我的模型上的 Validate 方法会运行多次。
即使我将模型验证剥离到此...
Client.Model = Backbone.Model.extend ({
validate : function(attrs) {
if ( !attrs.first_name ){
return 'Required';
}
}
});
如果我在 validate 方法中使用 console.log(),我可以看到它被调用了 5 次。前两个验证成功,第三个失败,然后第四个和第五个也通过(随后它在服务器上正确同步)
这造成了一个问题,因为我正在构建一个自定义消息插件,并且在验证发生时它被调用了 5 次。
我知道当我创建一个新模型并从服务器检索模型时它会被正确调用。但我无法理解的是这个“第三次”验证调用总是失败。 (顺便说一句,我已经设法弄清楚这不是服务器问题)
我想知道我在这里缺少什么..
提前致谢。
:)
JSBIN - http://jsbin.com/ucowoq/2/edit
检查控制台,显然POST有错误,但它显示验证方法运行了5次,在我的应用程序上,每次都在第3天验证失败!服务器只为创建的模型返回 500 错误或 JSON。
希望这对任何查看此内容的人有所帮助。
编辑: 我想出了这个技巧来让一切正常工作。我仍然对 validate 方法被调用 5 次感到不满意,但是因为导致验证失败的 1 次出现包含一个具有键和“未定义”值的对象,所以我只是在返回任何内容之前检查它。这允许我实现我的“消息”插件,因为我现在可以在正确的时间检索错误。
validate: function( attrs ){
if (attrs.first_name !== undefined){
if (!attrs.first_name)
return 'first name required';
}
}
【问题讨论】:
-
Uncaught TypeError: Cannot call method 'extend' of undefined ... on the jsbin
标签: backbone.js