首次创建新模型时,有没有办法在 Backbone.js 中抑制模型验证?
在我的应用程序中,我有一个包含任意数量模型的集合,这些模型表示为列表项。用户可以单击每个项目上的按钮,这会在当前项目下方插入一个新的空项目。显然,空项目未通过验证,因为我不希望稍后保存空项目。
当我创建新项目时,我无法知道什么是合理的默认值,因此用有效数据预填充新模型似乎不是一个选项。
有什么建议么?
更新:在处理一个切线相关的问题时,我意识到我正在使用 Backbone.js 版本 0.9.0。当这个版本发布时,其他人也遇到了与我相同的问题,他们在这个问题 https://github.com/documentcloud/backbone/issues/917在 GitHub 上。
Jeremy 在 0.9.1 中修改了验证来解决这个问题。将(暂时)空模型添加到集合中是一个有效的现实用例。您可以在视图中处理新的空模型,但是如果您像我一样管理项目列表,那么除了必须的集合之外,这还迫使您拥有一组项目视图(包括空的视图)是有效的模型。对于原本简单的场景来说,这是一个非常笨拙的解决方法。很高兴这个问题得到了解决。
您不应该添加无效模型:)
深入研究 Backbone 源代码(至少 0.9.1)表明可以通过将选项传递给 add 方法来规避该机制:
var Mod=Backbone.Model.extend({
validate: function(attrs,opts) {
if (opts.init) return;
return "invalid";
}
});
var Col=Backbone.Collection.extend({
model:Mod
});
var c=new Col();
c.add({},{init:true});
console.log(c.length);
小提琴:http://jsfiddle.net/jZeYB/ http://jsfiddle.net/jZeYB/
警告:它可能会破坏整个线路。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)