只是想知道每次使用Backbone.js路由器时是否有一种简单的方法来触发自定义功能,而无需在每个路由器功能中添加它。现在我的脚本看起来像这样:
var AppRouter = Backbone.Router.extend({
routes: {
'' : 'index',
'test': 'test',
},
initialize: function() {
},
index: function() {
customFunction();
indexView.render();
},
test: function() {
customFunction();
testView.render();
},
});
我想有这样的事情:
var AppRouter = Backbone.Router.extend({
routes: {
'' : 'index',
'test': 'test',
},
initialize: function() {
},
index: function() {
indexView.render();
},
test: function() {
testView.render();
},
change: function() {
customFunction();
}
});
有人有任何建议吗?
答案 0 :(得分:19)
每当路由与Router
匹配时,会使用匹配路由的名称触发route:[name]
事件,以允许类侦听某些路由匹配。所有骨干对象也支持事件发生时触发的all
事件。
所以你可以利用它来绑定all
上的Router
事件,只要路由器做了一些路由就会触发。
initialize: function() {
this.bind( "all", this.change )
},
如果您对匹配的路线感兴趣,则将其作为第一个参数传递给绑定函数。
更多详情here in the FAQ
答案 1 :(得分:9)
更多(新的)Backbone编写绑定的方式是:
initialize: function() {
this.listenTo(this, "all", this.change )
},
如果你问我,一个更好的倾听只会route
;因为all
会触发两个事件,我认为这些:
“route:[name]”(params) - 特定路由时由路由器触发 匹配。
“route”(route,params) - 路由器在任何路由时触发 已匹配。
答案 2 :(得分:0)
我是骨干新手。在Laurens回答之后,我设法通过以下
来调用每个路线更改app_router.on('route', function(e){
console.log(e);
});