私は1ページアプリケーションを作成しています。私はバックボーンが非常に新しくなっています。私は同じラッパーdivを使用する複数のビューを作成することに問題があります。バックボーン削除ビューでelを削除します
マイセットアップ:
私はすべてのビューに近い機能を追加しました:
Backbone.View.prototype.close = function(){
this.remove();
this.off();
if (this.onClose){
this.onClose();
}
}
私は、ビューをレンダリングそれらを削除し、新しいものをレンダリングするラッパーのdivを持っています。だから私のSetupViewは次のようになります。私は閉じ意見を交換機能から
app.SetupView = Backbone.View.extend({
el: '#my_view_wrapper',
...
});
このような電流(オープン)ビュー:私の問題があることである
var v = this.model.get('view');
v.close();
質問私は同じラッパーdivを使用して複数のビューを持っています。しかし、ビューを閉じると、このwrapper-divが削除されているように見えます。作成しようとする次のビューでは、このdivは見つかりません。
私は簡単な解決策があると思いますか?私は同じラッパーを再利用し、ラッパー自体ではなく、その内部のビューを削除するだけです。
'remove'はDOMから要素を削除します。しかし、私は「エル」を誤解したと思う。私はそれがちょうど新しい要素が注入された場所だと思ったが、新しい要素の一部となることを学んだので、 'remove'を呼び出すと削除されます。 – swenedo
一般的には、それぞれのビューに自分自身の 'el'を管理させるほうがよいでしょう。ビューは、' el'を作成して、それを行い、ビューが削除されたら削除します。呼び出し元は、呼び出し元が制御するコンテナ内にビューの 'el'を置きます。複数のビューにDOM要素を再利用しないと、多くの問題を回避できます。 –
@muistooshort - 良いアドバイス。これについて考えたことはありません。完璧な意味合いがあります。ありがとうございました。 – cheshireoctopus