【发布时间】:2015-12-11 04:30:10
【问题描述】:
我已经在互联网上搜索了触发旧视图破坏的方法。 有一些功能可以做到这一点,但是,我不知道如何触发它们。理想情况下,有一种方法可以在关闭视图时触发销毁。 我找不到如何触发该特定事件的方法。
【问题讨论】:
标签: javascript events backbone.js views
我已经在互联网上搜索了触发旧视图破坏的方法。 有一些功能可以做到这一点,但是,我不知道如何触发它们。理想情况下,有一种方法可以在关闭视图时触发销毁。 我找不到如何触发该特定事件的方法。
【问题讨论】:
标签: javascript events backbone.js views
您应该调用view.remove() 来触发其销毁,如文档http://backbonejs.org/#View-remove 中指定的那样
例如,如果您有:
var myView = Backbone.View.extend({
initialize: function() {
...
},
render: function() {
...
}
});
您可以稍后致电myView.remove(),前提是您可以参考myView。
如果您使用listenTo(推荐)方法而不是on 侦听器,则此方法还应删除与视图关联的所有事件侦听器。您还可以添加 view.off() 以确保删除事件。
【讨论】:
this.currentView 来保存当前视图,然后当路由器切换到新视图时您会使用if(this.currentView) this.currentView.remove(); this.currentView = new WhateverView()。
这篇古老但精彩的文章by Derick Bailey 在解释问题以及如何解决它方面做得很好。正如 Monica 正确建议的那样,这依赖于 view.remove(),但您可以更新路由器以破坏现有视图 -
尝试类似于
if (currentView) {
currentView.remove();
currentView = newView();
}
【讨论】: