Backbone.js の非常に便利な拡張機能として BackBone リレーショナルを使用しています。
しかし、バックボーン リレーショナル モデルを 1 - M 関係で保存した後に問題が発生しました。
私が見ている問題は、model.save() の後、コレクション内の関連するすべてのモデルに対して add: がもう一度起動されることです。これにより、モデルがマスター ビューで 2 回目にレンダリングされるため、ビューに問題が発生します。
私のマスタービューは次のように設定されています:
//master view
initialize: function(){
_.bindAll(this, 'render', 'renderRelated');
this.model.bind('change', this.render);
this.model.bind('add:related', this.renderRelated);
}
これは、最初の読み込み時と、新しい関連モデルを追加するときにうまく機能します。問題は、親モデルで save が呼び出されるとadd:related
、モデルに ID などがある場合でも、ネストされたモデルごとに再度起動されることです。保存により、関連するコレクションが完全に再作成されるようです。
他の人はどうやってこれを回避したのだろうか?私は考えていました:
- ネストされたビューを関連する各モデルにアタッチする
- bind rm:related は、マスター ビューからビューを削除するメソッドに関連します。
これは私にはかなりハッキリしているようで、非常に非効率的であり、サブビューが削除されて再度追加されると、エンドユーザーにフラッシュ効果が発生します。
この一環として、私もにバインドしようとしていましたreset:related
が、保存後に起動しないようです。