每条路线上都有骨干路由器

时间:2012-10-07 21:25:54

标签: javascript backbone.js

我的问题是:

所有HTML都在<div id="application">容器中,默认情况下为0不透明度。这是因为JavaScript会进行一些DOM定位,因此完成所有操作后,我只需在class="rendered"中添加<div id="application>",然后就会显示该页面。

所以问题是,对于我的Backbone路由器中的每条路由,我需要在实际路由之前或每条路由上始终触发的东西,这是可能的吗?

感谢您的帮助!

2 个答案:

答案 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