Backbone.js - すべてのサブビューを削除する 質問する

Backbone.js - すべてのサブビューを削除する 質問する

ルートが変更されるたびに再レンダリングされるトップレベルの PageView があります。このページビューには、ネストされたサブビューが多数埋め込まれています。Pag​​eView を再レンダリングする場合、PageView とともにネストされたサブビューをすべて削除/アンバインドする必要がありますか、それとも PageView のみを削除/アンバインドする必要がありますか? すべてのサブビューを削除/アンバインドする必要がある場合、これを行うための最適な方法は何ですか?

ベストアンサー1

はい、適切に削除してバインドを解除する必要があります。

http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

これを行う簡単な方法は、サブビューの配列を親ビューに保存することです。次に、close親ビューのメソッドで、配列をループし、close子ビューのメソッドを呼び出します。

ParentView = Backbone.View.extend({
  initialize: function(){
    this.childViews = [];
  },

  render: {
    for (var i = 0; i < 10; i++){
      var childView = new ChildView();
      // do stuff with the child view
      this.childViews.push(childView);
    }
  },

  close: function(){
    this.remove();
    this.unbind();
    // handle other unbinding needs, here
    _.each(this.childViews, function(childView){
      if (childView.close){
        childView.close();
      }
    })
  }
});

親ビューを削除または置き換える準備ができたら、必ず親ビューでメソッドを呼び出してくださいclose。これにより、すべての子ビューが適切にクリーンアップされます (すべての子ビューに独自のcloseメソッドがあると仮定)。

おすすめ記事