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

Jos*_*arl 5 backbone.js

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

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

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

有什么建议?

更新:在处理与切向相关的问题时,我意识到我使用的是Backbone.js版本0.9.0.当这个版本发布时,其他人遇到了同样的问题,他们在GitHub的这个问题上抱怨.

Jeremy修改了0.9.1中的验证以解决此问题.将(临时)空模型添加到集合中是一个有效的实际用例.您可以在视图中处理新的空模型,但是如果您正在管理像我这样的项目列表,那么除了您的必须收集之外,这会强制您拥有项目视图的集合(包括空的项目视图).有效的模型.对于一个原本简单的场景来说,这是一个非常笨重的解决方法.很高兴这个问题得到解决.

nik*_*shr 3

您不应该添加无效模型:)

深入研究 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);
Run Code Online (Sandbox Code Playgroud)

小提琴: http: //jsfiddle.net/jZeYB/

警告:它可能会破坏整个线路。