在Backbone.js中更改路由之前执行一个函数

时间:2012-02-24 19:19:12

标签: backbone.js javascript-framework

如何在Backbone路由器调用特定路由功能之前收到通知?

我希望在渲染每一页之前有一个通用的“重置”功能。

我可以绑定任何事件吗?

更新:我找到的解决方案基于扩展路由器或历史记录以触发事件。

4 个答案:

答案 0 :(得分:9)

使用1.1.x release方法看起来Backbone的Router.execute符合您的要求:

MyRouter = Backbone.Router.extend({
  routes: {},

  // fired before every route. 
  execute: function(callback, args) {
    // ...
  }
});

答案 1 :(得分:2)

如果存在执行函数,则会在每次路由更改之前调用它,但是您必须在回调中传递参数以正确执行其他匹配路由。

MyRouter = Backbone.Router.extend({
      routes: {},

      // fired before every route. 
      execute: function(callback, args, name) {
         //your logic
         if (callback) callback.apply(this, args); //this must be called to pass to next route
       },
    });

答案 2 :(得分:0)

此插件可以满足您的需求。它适用于0.5.3。我不确定它是否适用于0.9.1。

https://github.com/angelo0000/backbone_filters

答案 3 :(得分:0)

我'我在构造函数中使用它并且它正常工作

this.bind(" all",this.ACL);

这里的ACL是一个函数