Javascript 使用navigate时主干路由器触发的事件顺序
我正在使用主干网的“所有”事件捕获应用程序中的所有路由事件,以便记录页面视图。只要我不使用Javascript 使用navigate时主干路由器触发的事件顺序,javascript,backbone.js,Javascript,Backbone.js,我正在使用主干网的“所有”事件捕获应用程序中的所有路由事件,以便记录页面视图。只要我不使用导航手动触发路线,这项功能就可以正常工作。 在下面的示例中,我将用户从仪表板路由转发到登录路由。主干在执行路由回调后触发事件,导致以下输出: showDashboard showLogin route:showLogin tracking:/login route:showDashboard tracking:/login 显然这不是我想要的。我知道我可以调用showLogin而不是使用navigate来
导航
手动触发路线,这项功能就可以正常工作。
在下面的示例中,我将用户从仪表板
路由转发到登录
路由。主干在执行路由回调后触发事件,导致以下输出:
showDashboard
showLogin
route:showLogin
tracking:/login
route:showDashboard
tracking:/login
显然这不是我想要的。我知道我可以调用showLogin
而不是使用navigate
来触发登录路径,这就是我现在正在做的,但我想知道为什么事件的顺序与触发的回调顺序不同
这是我的路由器(简称):
主干网的
路由器
实际上非常简单,如果您阅读,您将在其构造函数中看到以下内容:
this._bindRoutes();
this.initialize.apply(this, arguments);
\u bindrouts
按预期附加所有路由,并在调用initialize
函数之前执行此操作。所以你的绑定总是在主干完成后触发
你可能会更好地找到另一种方法来做这件事
您可以在路由中自己键入函数之前调用,以跟踪页面浏览量等。或者您可以覆盖路由,跟踪页面浏览量,然后确保使用主干网.Router.prototype.route.call(参数)之类的函数调用主干网的实现代码>
this._bindRoutes();
this.initialize.apply(this, arguments);