【问题标题】:Meteor: Call template helper from other templateMeteor:从其他模板调用模板助手
【发布时间】:2016-05-26 22:49:46
【问题描述】:

我有两个模板,并且我已经定义了 JavaScript 帮助程序和事件来配合每个模板。在模板 A 中单击按钮时,我想做的一件事是调用模板 B 的辅助函数,该函数将更改屏幕上显示的内容。这可能吗?

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

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

    B.helpers.call("helperFunctionFromTemplateB");

【问题讨论】:

    标签: meteor


    【解决方案1】:

    对于我认为您想要实现的目标,有很多解决方案,但答案实际上取决于上下文。

    1. 如果模板 A 是 B 的子模板:
      1. 您可以将父模板中ReactiveVar 的引用传递给子模板的数据上下文,并使用{{>childTemplate reactiveVar=reactiveVar}} 对其进行修改,其中reactiveVar 是父模板中的帮助器,它返回对反应变量的引用
      2. 如果您要更改的内容是在父级的数据上下文中,您可以使用Template.parentData(n),其中n 是您要跳转的级别数量。虽然修改父数据可能不会立即反应,但您可以通过 Template.currentData() 访问它来使 data 属性反应。
    2. 使用某种全局可访问的状态。最常见的答案可能是使用Session 包并使用Session.get('var')Session.set('var', val)
    3. 使用event emitter。这种方法在解耦和可重用性方面获得了 +'s,但如果您只需要从一个来源在一个地方修改此变量(即您的要求很简单),它也可能很笨拙
    4. Meteor 1.3 - 如果您想在多个地方引用您的反应数据,但又不想创建像 Session 这样的全局变量,请使用 ReactiveVar 或 Reactive Dict(更接近会话),在有意义的地方创建你的变量,export 它,import 它在你的模板/其他要使用的地方。

    还有很多其他的解决方案,这些只是我想到的第一个。如果您提供更具体的上下文,我将提供我认为最好的代码示例并解释原因。 :)

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 2014-11-27
      • 2013-02-18
      • 2015-11-09
      • 2015-09-14
      • 2015-09-20
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      相关资源
      最近更新 更多