我希望在Backbone.js路由器中分别触发路由之前和之后调用setup/teardown方法。有没有人创造出一种优雅的方式来做到这一点?
最佳答案
_.wrap不是解决方案,例如,如果您有20条路由,则必须将它们全部包装起来。
但是您可以通过元编程来做到这一点
class Backbone.FlexRouter extends Backbone.Router
route: (route, name, handler) ->
super route, name, ->
@trigger "route:before"
handler()
@trigger "route:after"
UPD:我相信JS应该是这样的(但是我没有测试过)
var rp = Backbone.Router.prototype
rp.routeWithoutEvents = rp.route
rp.route = function(route, name, handler){
var that = this
this.routeWithoutEvents(route, name, function(){
that.trigger("route:before")
handler()
that.trigger("route:after")
})
}
关于Backbone.js —触发路由之前/之后的调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7394695/