5

バックボーンのドキュメントには次のように記載されています。

検証が失敗すると、Model.set は失敗します。値が設定されないため、コールバックはトリガーされません。{ Silent: true } を Model.set に渡すことができます。これにより、値が設定されますが、コールバックもトリガーされません。

そう、

Backbone Model が単に属性値を設定するために有効な状態を必要とするのはなぜですか? ユーザーが UI を操作するときに属性を設定したいが、モデルがまだ有効になっていない場合はどうすればよいでしょうか? { Silent: true } を渡して手動で変更をトリガーしない限り、変更コールバックを使用できないことを意味します。

これを処理するより良い方法を知っていると言ってください:)

4

2 に答える 2

3

Whyの質問にどう答えたらよいかわかりませんが、 set が検証を実行することがなぜ良いのかについての議論があると言えます。たとえば、クライアント側の検証をリアルタイムで行うのが非常に簡単になります。

validateユーザーが現在変更している値を検証するだけで問題を解決できる場合は、メソッドとメソッドを組み合わせることで解決できますhasChanged

たとえば、次のようなものです。

Backbone.Model.extend({
  defaults : { name : "" },

  validate : function (attrs) {
    var errors = {};
    if(this.hasChanged("name") && attr.name.length == 0) {
      errors.name = "Need a name yo!";
    }
    //...

    if(_.keys(errors).length > 0) {
      return errors;
    }
  }
})
于 2012-11-27T00:08:48.420 に答える