编程语言
首页 > 编程语言> > javascript – 在路由更改时销毁骨干视图

javascript – 在路由更改时销毁骨干视图

作者:互联网

在离开当前路线位置后,我的视图应该被销毁.

因此,在此示意图示例中,应在用户输入其凭据后销毁登录视图:

我尝试使用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(); 
      });
    },
});

不幸的是,这不起作用,因为在执行路由后引发了路由事件:

http://jsfiddle.net/hcuX9/

是否有解决方案在离开路线位置后摧毁视图?

我是否需要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();  
});

标签:jquery,javascript,backbone-js,backbone-views,backbone-routing
来源: https://codeday.me/bug/20190625/1285141.html