0

私が遭遇したほとんどのバックボーンのチュートリアルと例は、モデルに対して次のようなことを提案しています。

this.model.on('change', this.render, this);

私の特定のケースでは、 であるモデルのビューを作成してformおり、フィールドはモデル プロパティに関連付けられています。ユーザーが のフィールドを更新するformと、モデルも更新される必要があります。モデルを更新するための適切なコードを起動するフィールドにイベントがバインドされているため、これは問題ではありませんでした。

ただし、私が直面している問題は、モデルが更新されたときにビューも更新する必要があることです (上記のユビキタスな変更イベント バインディングのように)。これにより、フィールドが更新されるたびにビューが再レンダリングされます。これは、基になるモデルが変更されているためです。そのため、 の値を変更するたびにform、ビューが再描画されます。これは非効率的であり、多くの苛立たしいバグ (フォーカスが失われるなど) を引き起こします。

この問題は通常どのように処理されますか?

4

2 に答える 2

3

http://backbonejs.org/#Events-catalog

モデルの変更によってビューのレンダリングがトリガーされないようにするには、 を使用します{silent: true}。Backbone の最後のバージョンでは、これにより変更が完全に沈黙します (以前は、次の非サイレント変更まで閉じられていました)。したがって、モデルへの変更がユーザー入力に起因する場合は、silentフラグを使用してください。

于 2013-06-26T18:47:55.813 に答える
1

change イベント イベントを発生させずにモデルを更新したい場合は、以下を呼び出して行うことができます。

this.model.set('val', newval, {silent:true});
于 2013-06-26T18:51:48.040 に答える