我已經搜索了互聯網尋找破壞舊視圖的方法。 有功能可以做到這一點,但是,我不知道如何觸發它們。理想情況下,在關閉視圖時會有一種觸發破壞的方法。 我找不到如何觸發該特定事件的方法。如何刪除舊的骨幹視圖
回答
你應該叫view.remove()
觸發其銷燬的文件http://backbonejs.org/#View-remove
例如,在指定的,如果你有:
var myView = Backbone.View.extend({
initialize: function() {
...
},
render: function() {
...
}
});
您可以稍後致電myView.remove()
前提是你必須myView
提供一個參考。
如果您使用listenTo
(推薦)方法而不是on
偵聽器,則此方法還應刪除與該視圖綁定的任何事件偵聽器。您也可以添加view.off()
以確保事件被刪除。
這個古老而神奇的作品by Derick Bailey在解釋這個問題以及如何解決問題方面做得非常出色。由於莫妮卡正確地提出這依賴於view.remove()
但你可以更新你的路由器來破壞你現有的觀點 - 嘗試類似的東西
if (currentView) {
currentView.remove();
currentView = newView();
}
我試圖使用 if(currentView)currentView.remove(); currentView = newView(); } –
我試圖把一個this.currentView = null在初始化我的路由器,在清理函數中,沒有輸入if語句,就像if(this.currentView)不起作用.. –
在某個點您需要將this.currentView更新爲您想要刪除的視圖。在您的各個骨幹路由中執行此操作可能很有意義,然後創建一個單獨的函數,其中包含您可以在每次導航到新骨幹路由時調用的if語句。 –
- 1. 骨幹刪除視圖刪除el
- 2. 骨幹刪除視圖和DOM節點
- 3. 骨幹 - 防止視圖被刪除後
- 4. 從路由器刪除骨幹視圖
- 5. 如何從視圖骨幹
- 6. 刪除骨幹視圖的所有事件偵聽器
- 7. 在骨幹js中重新創建已刪除的視圖
- 8. 骨幹:查看刪除/刪除
- 9. 骨幹刪除模型
- 10. 骨幹刪除行ID
- 11. 骨幹視圖DOM元素除去
- 12. 導航視圖骨幹不刪除模型
- 13. 刪除骨幹視圖但DOM節點數不斷增加?
- 14. 如何擴展骨幹視圖
- 15. 如何正確銷燬骨幹視圖?
- 16. 如何將Stripe放入骨幹視圖?
- 17. 創建視圖的骨幹視圖
- 18. 骨幹:視圖中的視圖列表
- 19. 骨幹葉離散DOM元素,無論我如何刪除視圖
- 20. 骨幹視圖不顯示
- 21. 骨幹視圖collection.each()bug?
- 22. 骨幹JS追加視圖
- 23. 骨幹主視圖控件
- 24. 骨幹視圖問題
- 25. 骨幹three.js視圖綁定
- 26. 骨幹基本視圖
- 27. 骨幹視圖嵌套
- 28. 骨幹視圖和window.getSelection
- 29. 骨幹子視圖事件
- 30. 骨幹視圖繼承
我想觸發毀滅時,我瞭解它們到一個新的觀點,所以view.remove函數必須在離開舊視圖和輸入新視圖之間觸發。這是我的問題,我不知道何時何地使用remove函數。我希望這會幫助你理解這個問題。 –
你應該參考我在答案底部發布的鏈接。一種方法是修改Backbone.View類以包含close方法。另一種方法是創建一個父類,以使您的所有視圖繼承自支持關閉事件功能的視圖。最後,可以重寫Backbone.Router中的導航方法來執行活動視圖的銷燬,然後調用原始導航函數或使用router.route手動設置路由,並使用刪除活動視圖的回調函數。 –
我試圖通過創建一個與現有視圖關聯的全局變量來銷燬路由器中的現有視圖,並在創建與該全局變量新關聯的新視圖之前銷燬該視圖,但似乎不起作用 –