在onData Hooks之前和之后播放onBeforeAction Hooks of Iron路由器,为什么?

时间:2014-07-08 13:03:52

标签: meteor iron-router

我在我的应用程序中使用铁路由器,但是我正在尝试使用Blaze挂钩系统,我在路由上看到了一些问题。 我认为“之前”钩子在动作方法之前只调用一次。但事实上,它被调用了两次,一次在onData之前,一次在onData之后......所有在每次挂钩之前都会被播放。

为什么?

这里有一个示例应用https://github.com/Rebolon/meteor-sample-simpleVote/tree/bug/routing

1 个答案:

答案 0 :(得分:5)

如文档中所述

  

onBeforeAction   在动作函数之前运行(如果涉及反应,则可能多次)。

这意味着它在页面加载时运行一次,如果在其中有任何反应变量则再次运行。因此,如果您的onBeforeAction包含一个反应变量,并且它会发生变化,那么它将再次运行。

因此,如果您有订阅或您在那里做的事情,它将再次运行。很可能您在data方法中使用了相同类型的反应组件。这就是你发现它多次运行的原因。