gpt4 book ai didi

backbone.js - 防止 Backbone.js 模型在首次添加到集合时进行验证

转载 作者:行者123 更新时间:2023-12-04 19:15:49 24 4
gpt4 key购买 nike

有没有办法在首次创建新模型时抑制 Backbone.js 中的模型验证?

在我的应用程序中,我有一个包含任意数量模型的集合,这些模型表示为列表项。用户可以单击每个项目上的按钮,这会在当前项目下方插入一个新的空项目。显然,空项目未通过验证,因为我不希望稍后保存空项目。

当我创建新项目时,我无法知道什么是合理的默认值,因此使用有效数据预先填充新模型似乎不是一个选项。

有什么建议?

更新:在处理相关问题时,我意识到我使用的是 Backbone.js 版本 0.9.0。当这个版本发布时,其他人也遇到了和我一样的问题,他们在 this issue 中提示在 GitHub 上。

Jeremy 在 0.9.1 中修改了验证来解决这个问题。向集合添加(临时)空模型是一个有效的现实世界用例。您可以在 View 中处理新的空模型,但是如果您像我一样管理项目列表,那么除了必须的集合之外,这迫使您拥有一个项目 View 的集合(包括空的)-有效模型。对于其他简单的场景来说,这是一个非常笨拙的解决方法。很高兴这得到了解决。

最佳答案

你不应该添加无效的模型:)

深入研究 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);

fiddle : http://jsfiddle.net/jZeYB/

警告:它可能会把事情搞砸。

关于backbone.js - 防止 Backbone.js 模型在首次添加到集合时进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9634088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com