2017-07-13 10 views
-1

私はOuterViewと、複数のChildViewを含むMainViewを持っています。 OuterViewのいくつかのイベントでは、現在のMainView(各ChildViewでクローズ機能を起動する)を閉じて、別のChildViewを使って新しいMainViewを再描画します(ChildViewが1つのChildViewに表示されるのを止めるものは何もありませんMainViewを別のものに表示する - メインビューを少し異なるクエリ/フィルタとして変更することを考えてください)。バックボーンの子ビューが正しく削除されない

私はMainViewを表示していますが、いくつかのアクション/イベントは1つのChildViewを削除して、そのclose関数を呼び出すことができます。 。私は(例えば、単にリフレッシュページ全体、または変更されたMAINVIEW前ChildViewと同じ時間ChildViewを見たが)、それがうまく

2作品取り除くことを見たことがない場合))

1:これは、現在、このように動作しますChildViewで削除イベントが発生したときに、ChildViewが以前に見たことがある場合(たとえば、OuterViewの1ページ目のフィルタに、2ページ目に、1ページ目に戻る)、ビュー/たとえそれがクローズ機能を経ていてもHTMLです。

マイMAINVIEW close関数は次のようになります。私のChildViewがうまく閉じていない理由、それは見られている場合は誰もが知ってい

 close: function() { 
      this.$el.empty(); 
      this.stopListening();   
      this.remove(); 
     } 

  close: function() { 
       for (var key in this.childViews) { 
        this.childViews[key].close(); 
       } 

       this.undelegateEvents(); 
       this.$el.empty(); 
       this.stopListening(); 
       this.remove(); 
     }, 

マイChildView close関数は次のようになります前? (私はそれが最初によく削除されていないと推測しているので、ビューを閉じることに問題がある)。

おかげで、 クリス

+0

[mcve]を共有してください –

+0

私は今、ChildViewのインスタンス間で共有されたビューの追跡に使用されているプロトタイプの変数に実際に関連する問題を発見しました。 – xog

答えて

0

それはあなたのコードの残りの部分を見ることなく知ることは難しいですが、何のコンソールエラーがスローされていない場合、私はあなたがそれだと思うあなたの子ビューがDOM要素に接続されていないことを推測します。

ChildView closeメソッド内で、空にするとconsole.log(this.$el[0])に追加してみてください。ログに記録されたdivが空でも、HTMLはまだページ上にある場合、ビューはおそらくデタッチされたdivを使用している可能性があります。

ビューを添付できるDOM要素を操作する場合は、setElementを使用して、それらが正しい場所に接続されていることを確認できます。

関連する問題