我的Backbone Marionette應用程序中存在問題,我的子視圖未完全銷燬。你如何正確地銷燬你用另一個佈局/項目視圖替換的嵌套佈局視圖?Backbone Marionette - 佈局查看殭屍
我在Marionette documentation on destroying layout views的印象下,當我設置一個區域來顯示一個新視圖時,舊視圖被破壞。但是,通過排氣口觸發的事件仍然可以被舊的視圖看到,而這個舊視圖據說已被銷燬。
我創造了這個問題,在這裏的一個示例:https://jsfiddle.net/dhardin/5j3x2unx/
我相信這個問題從我的路由器莖:
App.Router = Marionette.AppRouter.extend({
routes: {
'': 'showView1',
'view1': 'showView1',
'view2': 'showView2'
},
showView1: function() {
var view1 = new App.View1();
App.Layout.mainRegion.empty();
App.Layout.mainRegion.show(view1);
},
showView2: function() {
var view2 = new App.View2();
App.Layout.mainRegion.empty();
App.Layout.mainRegion.show(view2);
}
});
的App.Layout.mainRegion.empty()不需要我的理解是視圖在區域管理器的show()函數中銷燬視圖時的處理。 要查看該問題,請通過導航導航到另一個視圖,然後單擊該按鈕。您將看到,舊視圖和新視圖都會觸發警報。
回到我的前木偶應用程序中,我遵循清理模式以避免討論here這些內存泄漏。
從本質上講,我顯示的視圖會調用下面的函數,當我的應用程序更改爲一個新的觀點:
Backbone.View.prototype.close = function(){
this.remove();
this.unbind();
}
請讓我知道如果你需要任何額外的信息。提前致謝!
啊,非常好。看起來我並沒有在上下文中傳遞,所以'ButtonClicked'的所有事件監聽器都被刪除了。謝謝您的幫助! :) – Dustin