Backbone.js —触发路由之前/之后的调用方法

标签 backbone.js routes router

我希望在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/

相关文章:

javascript - 模型创建新行而不是进行编辑

javascript - 将compositeView选项传递给itemView

javascript - Backbone & Underscore 未定义,加载思想

javascript - 在 Backbone/Underscore 模板中使用 "if",怎么样?

ruby-on-rails - 如何从引擎覆盖 Rails 应用程序路由?

Jquery 和 Rails 3 : Run controller action from js file?

node.js - 跨文件拆分时使用 router.use 表示路由器未定义参数

http - HTTP 的源端口是如何确定的? NAT 中是否存在冲突?

java - 连接到位于路由器后面的 RMI 服务器时出现问题

php - 流明:全新安装时找不到 App\Http\Controllers\Controller 类