【发布时间】:2012-01-19 07:41:18
【问题描述】:
Backbone.Router 中是否存在执行路由之前和之后的事件?
我的应用程序与jQuery.mobile 一起使用,并且在执行路由之前需要调用$.mobile.changePage,并且在控制器中可以访问$.activePage 当前显示的页面。控制器操作完成后,我应该触发文档上的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.history.loadUrl函数的方式。真的很干净!
标签: javascript backbone.js backbone-events