我正尝试在 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 ...");
});
关于javascript - Backbone.js - 使用 beforeRoute 过滤器扩展路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770526/