0

単一のモデルを表示することになっているビューがあります。リンクをクリックすることで、ユーザーは表示されているモデルを選択できます。それが発生し、選択したモデルがフェッチされた場合、ビューに別のモデルに切り替えるように指示するにはどうすればよいですか? 考えられる選択肢は 3 つあります。

  1. どういうわけか、ビューを新しいモデルに再バインドして更新します。
  2. モデル オブジェクトのリサイクル - 新しく選択したモデルの ID を設定fetch()し、ビューで魔法のように更新されることを期待します。
  3. ビューを削除し、新しいモデルで再作成します (フェッチが完了したら)。

最初のアプローチは「正しい」もののように感じますが、簡単な方法が見つかりません (設定modelは簡単ですが、ビューが自動的に更新されるようにするには、すべてのイベントを再バインドする必要があります)。2 つ目は奇妙に感じられ、競合が発生しやすく (同じ ID を持つモデルに 2 つのオブジェクトがある場合はどうなるでしょうか?)、まったく機能しない可能性があります。3番目は面倒すぎるようです。それで、私は何をすべきですか?

4

1 に答える 1

0

Backbone に ModelBinder ライブラリを使用することを検討してください: https://github.com/theironcook/Backbone.ModelBinder

ビューを更新するには、2 つの方法があります。モデルをビューに一度バインドしてから、後でモデルのプロパティを常に更新します。このように、Model 属性が変更されると、ModelBinder は自動的にビューを更新します。

もう 1 つの解決策は、モデルをビューからアンバインドし、別のモデルに再バインドすることです。

これはあなたにアイデアを与えるかもしれません: http://jsfiddle.net/dazqS/ビューには refreshModel 関数があり、古いモデルをバインド解除し、新しいモデルを再バインドします。

refreshModel: function(model){
    this._modelBinder.unbind();
    this.model = model;
    this._modelBinder.bind(this.model, this.el);
}
于 2013-10-15T12:28:04.983 に答える