ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-06-25 10:23:54  阅读:258  来源: 互联网

标签:jquery javascript backbone-js backbone-views backbone-routing


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

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

我尝试使用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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有