javascript - 主干路由器事件

标签 javascript backbone.js backbone-events

Backbone.Router 中是否存在执行路由前后的事件? 我的应用程序使用 jQuery.mobile 并且在执行路由之前需要调用 $.mobile.changePage 并且在 Controller 中可以通过 $.activePage 访问当前显示的页面。当 Controller 的 Action 完成时,我应该触发文档上的 create 事件以通过 $.mobile 新创建的元素获得“增强”。 我通过替换 loadUrl

来做到这一点
Backbone.history.loadUrl = ( function( old  ){
    return function() {  
       Router.trigger("all:before");   
       old.apply( Backbone.history, arguments );
       Router.trigger("all:after" );
    }
})( Backbone.history.loadUrl  );



 //Router.initialize
 initialize: function() {
     this.bind( "all:before", function( ) {  
         $.mobile.changePage( window.location.hash.split( "/" )[0] || "home", { changeHash:false} );
     });

     this.bind( "all:after", function() {
       $.mobile.activePage.trigger('create'); 
     });  
  }

是否有一些像这样的内置事件?

最佳答案

目前 Backbone.Router 中没有前后事件。

版本 0.5.3 支持以下路由器事件 ( all events here )

"route:[name]"(router) — 当某个路由器的路由匹配时。

不确定将发布哪个版本,但正在开发通用路由事件, 在 github 主干提交 #419有这个功能,但是还没有出新版本

之前的事件已经报告了所有问题(想法),请查看 github issue on that在这里。

所以,之前的事件还没有在那里,之后的事件会在一段时间后出现, 如果你真的已经需要一个事后事件,有一种方法可以让你自己加入, 通过绑定(bind)到 'all' 事件,它捕获所有事件,包括所有 'route:routename' 事件。然后只需拆分事件名称,如果它以路线开头,您将获得一般路线事件。 (如果在主干的发布之一中发布了后事件,这当然可以被删除和更改)

    this.bind('all', function (trigger, args) {
               var routeData = trigger.split(":");
                if (routeData[0] === "route") {
                   // do whatever here.  
                   // routeData[1] will have the route name
                }
        });

关于javascript - 主干路由器事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922557/

相关文章:

javascript - Selenium IDE : How to verify <TD> Contents when it contains a mix of tags and <BR> breaks

javascript - durandal.js View 模型通信

javascript - 主干js : register view events on parent element

javascript - Backbone - 如何重构此代码以防止重影 View ?

javascript - 如何在reactjs中互相嵌入组件?

javascript - 在 Javascript 中删除所有具有特定标签名称的 DOM 元素

javascript - Backbonejs 下划线节流功能未触发

javascript - 在获取模型后渲染 Marionette 区域

javascript - 主干 View 的声明性授权(权限)

javascript - Backbone : Event handler not defined?