【问题标题】:Are helper functions in Meteor reactive?Meteor 中的辅助函数是响应式的吗?
【发布时间】:2018-08-22 05:57:23
【问题描述】:

假设我的 HTML 文件中有以下代码:

{{#if someVar}}
    {{>someTemplate}}
{{/if}}

现在,如果最初 someVar 返回 false,则不会创建 someTemplate 模板。现在,由于某些事件,someVar 返回的值是true,模板是否会被渲染?我需要使someVar 成为ReactiveVar 才能工作吗?还是我应该使用autorun?哪种方法最好和最简单?这可以通过 Angular 中的 2-way binding 轻松实现。

【问题讨论】:

  • 如果someVar返回的变量是响应式数据源,那么它将重新运行。
  • 是的,ReactieVar 或任何其他反应式数据源将在帮助程序中自动重新运行

标签: javascript meteor meteor-blaze spacebars


【解决方案1】:

考虑上面给定的模板:

{{#if someVar}}
    {{>someTemplate}}
{{/if}}

非反应式示例

var someNumber = 42; // changing this will not cause a new run

Template.theTemplate.helpers({
  someVar() {
    return someNumber;
  }
});

反应式示例 1

var someNumber = new ReactiveVar(42); // changing this will cause a new run

Template.theTemplate.helpers({
  someVar() {
    return someNumber.get();
  }
});

反应式示例 2

Template.theTemplate.onCreated(function onCreated() {
  this.someNumber = new ReactiveVar(42); // changing this will cause a new run
});

Template.theTemplate.helpers({
  someVar() {
    return Template.instance().someNumber.get();
  }
});

前面提到的2路绑定是使用ReactiveVar oder ReactiveDict自动实现的。

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 2013-05-12
    • 2016-01-08
    • 2014-10-18
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 2015-01-29
    相关资源
    最近更新 更多