在离开当前路线位置后,我的视图应该被销毁.
我尝试使用Backbone.Router事件来解决这个问题:
var Router = Backbone.Router.extend({
initialize: function () {
Backbone.history.start();
},
routes: {
"sample" : "sample"
},
sample: function(){
// Build view
var demoView = $("<div/>")
.appendTo(document.body)
.text("I am lost!");
// Destroy view
this.once('route', function(){
demoView.remove();
});
},
});
不幸的是,这不起作用,因为在执行路由后引发了路由事件:
是否有解决方案在离开路线位置后摧毁视图?
我是否需要hack a new event进入Backbone.js?
解决方法:
我用来做的是让App.current变量指向正在渲染的当前视图.
在每个路由的顶部(或您的情况下的相关路径),我从App.current中删除当前视图,然后为其分配新视图:
someRoute: function() {
if(App.current && App.current.remove) App.current.remove();
// Asign a new current page
App.current = new SomeView();
...
}
这样我只能在每条路线上播放一个视图,摆脱像你这样的问题.
如果您不想检查App.current并在每个路由的顶部调用remove方法,您可以监听Backbone.history路由事件并在那里注入该逻辑:
Backbone.history.on('route', function() {
if(App.current && App.current.remove) App.current.remove();
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。