javascript - 每次使用 Router 时 Backbone.js 触发函数

标签 javascript backbone.js

只是想知道是否有一种简单的方法可以在每次使用 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();
    }

});

有人有什么建议吗?

最佳答案

每当路由被 Router 匹配时,一个 route:[name] 事件就会被触发,并带有匹配的路由名称,以允许类监听特定的路线匹配。所有主干对象还支持 all 事件,只要有事件发生就会触发。

因此,您可以利用它绑定(bind)到 Router 上的 all 事件,只要路由器执行某些路由,该事件就会触发。

initialize: function() {
    this.bind( "all", this.change )
},

如果您对匹配的路由感兴趣,它会作为第一个参数传递给绑定(bind)函数。

更多详情 here in the FAQ

关于javascript - 每次使用 Router 时 Backbone.js 触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704086/

相关文章:

backbone.js - 如何填充 Backbone.js 集合的 _byId 数组以便我可以在其上使用 `get` ?

javascript - Backbone.js:在 View 之间导航 - 销毁和重新创建

javascript - SVG viewbox 可以在 HTML Canvas 中吗?

javascript - Backbone 建议在服务器端生成页面时插入所有模型

动态元素的javascript验证

javascript - 无法获得自动 jquery 点击

javascript - 如何防止 NVDA 将 "Div"读取为可点击?

backbone.js - Marionette.ItemView 中的触发事件

javascript - gmappanel 移动到标记坐标 - EXTJS 4

javascript - ExtJS 4 - 动态更改折线图中的图例颜色