2012-03-09 16 views
2

Backbone.jsモデル検証の仕組みを理解しようとしていますが、奇妙な矛盾があります。私のアプリのある場所では、validateメソッドが期待通りに呼び出されています。しかし、別の場所では、Backbone.jsは{ silent: true }オブジェクトをバリデーターに渡しているように見えます。Backbone.jsモデルのバリデーションメソッドが起動しない

問題を説明するjsFiddleです。 validateメソッドを呼び出す必要があります。コピーボタンをクリックするか値が変わると、コードをステップ実行すると_validate関数が{ silent: true }オプションに渡されていることが明らかです。

私には何が欠けていますか?

更新:ここで起こっていたことが分かります。私はこのjsFiddleを元々作成しました。これは実際にはこの質問とは逆の問題でした。私は空のモデルをコレクションに追加しようとしていましたが、検証は発砲していました。私がFiddleを作ったとき、それは私のアプリが働きたがっているように働いた。空のモデルが追加されたときに検証は実行されませんでした。私はその違いを理解できませんでした。

私は自分のアプリケーションでBackbone.js 0.9.0を使用し、jsFiddleではバージョン0.9.1を使用していました。 Jeremyは、0.9.1でバリデーションを変更して、アプリで動作させたいようにしました(GitHubのthis issueを参照)。謎解き。

+0

だから新しいアイテムが生成され、何もそれに設定されていない時はいつでも...それは検証する必要があり

ジェレミーはあなたが行うことを示唆していますか? – JayC

+0

うん。私は、この例ではあまり意味がないことを知っています。これは簡単なシナリオです。私のアプリの部分では、そのプロパティがすべてnullに設定されていても、新しいモデルがコレクションに追加されるたびに 'validate'が呼び出されます。 –

答えて

3

バックボーンは、具体的_validateを呼び出すことはありません。

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

ここではgithubの上の私たちの交流です:can't override silent:true

1

Backbone docsから、トリガーを有効にするためには、モデルでsetまたはsaveを呼び出す必要があるようです。 setが呼び出されるように

私はjsfiddleを更新し、現在検証機能がトリガされます:あなたは新しいモデルを作っているとき

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

関連する問題