什么触发IronRouter中的onAfterAction而不是路由更改?

时间:2014-09-10 01:39:29

标签: meteor iron-router

我无法调试我不想运行的onAfterAction。当我点击某个div时会发生这种情况。 Router.go未被调用(在铁路由器代码中使用debugger;验证),并且URL未更改。我的点击处理程序中找不到任何会导致路由更改的内容。 onAfterAction来自deps失效:

Router.configure.onAfterAction (routes.coffee:5)
RouteController.runHooks (route_controller.js:155)
(anonymous function) (route_controller.js:291)
RouteController.runHooks (route_controller.js:158)
(anonymous function) (route_controller.js:283)
Deps.Computation._compute (deps.js:196)
Deps.Computation._recompute (deps.js:210)
Deps.flush (deps.js:304)

2 个答案:

答案 0 :(得分:1)

可能你在onAfterAction(cursorSession对象中有一些反应数据源。 每当反应数据源发生变化时,它都会重新运行。

您可以通过在onAfterAction中包装函数来禁止此行为:

Tracker.nonreactive(function(){})

答案 1 :(得分:0)

单击div会导致用户文档发生更改。全局onBeforeAction检查用户是否已登录(if Meteor.user()),该用户已被动并触发重新运行actiononAfterAction。我将其更改为if Meteor.userId(),在更新用户文档时没有失效。