我的问题是:
所有HTML都在<div id="application">
容器中,默认情况下为0
不透明度。这是因为JavaScript会进行一些DOM定位,因此完成所有操作后,我只需在class="rendered"
中添加<div id="application>"
,然后就会显示该页面。
所以问题是,对于我的Backbone路由器中的每条路由,我需要在实际路由之前或每条路由上始终触发的东西,这是可能的吗?
感谢您的帮助!
答案 0 :(得分:10)
Backbone.Router
会发出事件,因此您可以绑定
特定事件或all
以捕获所有有效的路线更改。事件
参数将包含路由回调名称:
var MyRouter = Backbone.Router.extend({
routes: {
"foo": "bar"
},
initialize: function() {
this.on('all', function(routeEvent) {
// If you had clicked #foo, routeEvent would contain
// `route:bar`. You can trigger your CSS changes here.
});
}
});
我觉得这种代码在视图中会更好,但这应该是 做你要求的。
答案 1 :(得分:2)
您可以在路由器中定义一个带参数的方法。然后,对于每个路由,调用该方法并传入一个参数,该参数将用于确定要呈现的视图。在该方法的开头,您可以定义您想要发生的“on-every-router-call”逻辑。
例如:
routes:
"": "renderPage"
":page": "renderPage"
renderPage: (page) ->
// check if page is defined, if not render index, if it is, render that page