Meteor:从其他模板调用模板助手

时间:2016-02-15 21:21:42

标签: meteor

我有两个模板,我已经定义了JavaScript助手和事件。当在模板A中单击按钮时,我想要做的事情之一是为模板B调用辅助函数,这将改变屏幕上显示的内容。这可能吗?

如果不可能,我想重新加载模板B.

我该怎么做?我使用Tracker.autorun吗?反应变量?理想情况下,我会在模板A的事件函数中执行

    B.helpers.call("helperFunctionFromTemplateB");

1 个答案:

答案 0 :(得分:2)

我认为你想要实现的解决方案有很多,但答案实际上取决于背景。

  1. 如果模板A是B的子模板:
    1. 您可以将对父模板中的ReactiveVar的引用传递给子模板的数据上下文,并使用{{>childTemplate reactiveVar=reactiveVar}}对其进行修改,其中reactiveVar是父模板中的帮助器,返回对反应变量的引用
    2. 如果要更改的内容位于父级的数据上下文中,则可以使用Template.parentData(n),其中n是您想要跳转的级别数。虽然修改父级数据可能不会立即产生反应,但您可以通过data
    3. 访问它来使Template.currentData()道具具有反应性
  2. 使用某种全局可访问状态。最常见的答案可能是使用Session包并使用Session.get('var')Session.set('var', val)
  3. 使用event emitter。这种方法可以实现解耦和可重用性,但如果您只需要在一个地方从一个来源修改这个变量(也就是您的要求很简单),它也可能很重要。
  4. Meteor 1.3 - 如果您想在多个地方引用您的被动数据,但又不想创建像Session这样的全局,请使用ReactiveVar或{{3} (更接近会话),在有意义的地方创建变量,export,并在模板中使用import /其他任何地方使用。
  5. 还有很多其他解决方案,这些只是第一个浮现在脑海中的解决方案。如果您提供更具体的上下文,我将提供我认为最好的代码示例并解释原因。 :)