javascript - Backbone.js - 使用 beforeRoute 过滤器扩展路由器

标签 javascript backbone.js

我正尝试在 Backbone.js 中为我的路由实现前置过滤器。我找到了以下代码 here -

var MyRouter = Backbone.Router.extend({
    route: function(route, name, callback) {
        return Backbone.Router.prototype.route.call(this, route, name, function() {
            this.trigger.apply(this, ['beforeroute:' + name].concat(_.toArray(arguments)));
            callback.apply(this, arguments);
        });
    }
});

但是,我不确定下一步需要做什么。我需要用我想要的“路由前”逻辑定义一个函数,但我不明白它将如何被调用。

最佳答案

重写的route 函数触发一个名为beforeroute:routename 的事件,然后调用原始的route 函数。所以如果你有这样的路线:

var MyRouter = Backbone.Router.extend({
    routes: { 
        "": "home"
    },
    // ...
});

然后您将使用以下方法订阅 beforeroute 事件:

var router = new MyRouter()

router.on("beforeroute:home", function() {

    // before route logic here...
    alert("Home route is about to get hit ...");
});

Fiddle demo.

关于javascript - Backbone.js - 使用 beforeRoute 过滤器扩展路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770526/

相关文章:

wordpress 3.5媒体管理器-添加我自己的ribs.js View

javascript - Chai 中的 “assert” 、 “expect” 和 “should” 有什么区别?

javascript - 在数组上使用过滤器和匹配方法来查找精确匹配

javascript 闭包,谁能帮我理解为什么

javascript - Backbone、Coffeescript - 在 AJAX 中将函数作为回调传递

javascript - 获取 Backbone 集合时出错: A "url" property or function must be specified

jquery - 将集合更改绑定(bind)到 View 渲染

javascript - 在文档中查找、更新和返回数组对象 (mongodb)

javascript - 如何使用单选按钮选择单个和多个复选框

javascript - 使用 fetch with backbone 更新集合