gpt4 book ai didi

javascript - Backbone.Router路由改变事件触发两次

转载 作者:行者123 更新时间:2023-12-04 02:20:27 25 4
gpt4 key购买 nike

这是我的 Coffescript 路由器类:

class App.Router extends Backbone.Router

initialize: ->

console.log 'Router.init'

@on 'all', ->
console.info 'route changed'

routes:
'': 'home'
'test': 'test'

home: ->
console.log 'home routed'

test: ->
console.log 'test routed'

当我重新加载我的本地主机页面时,“@on 'all'”回调似乎触发了两次(我的 firebug 上有两个 console.info ...)

这是我的 Firebug 输出:

App.init
Session.init
Router.init
home routed
route changed
route changed

如您所见,“路线已更改”输出位于我的家庭路线之后...

最后这是我的 Bootstrap 代码(带有我的 App 命名空间...),我在其中放置了 history.start

App =
init: ->
console.log 'App.init'
@session = new App.Model.Session
@router = new App.Router
# @userPanel = new App.View.UserPanel
Backbone.history.start pushState: true

Model: {}
View: {}

最佳答案

all 事件是一种特殊的事件监听器语法,它捕获由源对象触发的任何类型的all 事件。我猜另一个事件实际上根本不是 route 事件,而是 route:name 事件。

要捕获所有路由,只需使用 route 事件即可:

@on 'route', ->
console.info 'route changed'

关于javascript - Backbone.Router路由改变事件触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14814099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com