Backbone.js模型验证方法无法触发

时间:2012-03-09 18:34:36

标签: backbone.js

我试图理解Backbone.js模型验证是如何工作的,但我看到了一些奇怪的不一致。在我的应用中的某个位置,validate方法按预期调用。然而,在另一个地方,Backbone.js似乎是将{ silent: true }对象传递给验证器,即使我不想要它。

这是一个说明问题的jsFiddle。应该调用validate方法当单击“复制”按钮或值发生更改时,但是当我单步执行代码时,很明显_validate函数正在传递{ silent: true }选项。

我错过了什么?

更新:弄清楚这里发生了什么。我创建这个jsFiddle最初是为了复制我遇到的一个实际上与这个问题相反的问题 - 我试图将一个空模型添加到一个集合中,并且验证正在触发并阻止我这样做。然而,当我制作小提琴时,它起作用,因为我希望我的应用程序能够工作。添加空模型时,验证未触发。我无法弄清楚差异。

原来我在我的应用程序中使用了Backbone.js 0.9.0,在我的jsFiddle中使用了0.9.1版本。 Jeremy在0.9.1中对验证进行了更改,使其按照我希望它在我的应用程序中工作的方式工作(请参阅GitHub上的this issue)。神秘解决了。

2 个答案:

答案 0 :(得分:3)

当您制作新模型时,Backbone特别不会调用_validate

杰里米建议你这样做:

var mymodel = new MyModel();
mymodel.set({params});

这是我们在github上的交流:can't override silent:true

答案 1 :(得分:1)

Backbone docs开始,您似乎必须在模型上调用set或save才能触发验证。

我更新了jsfiddle,以便调用set,现在验证函数被触发:

http://jsfiddle.net/J3uuH/12/