Meteor:访问子模板中的反应式dict变量

时间:2015-12-06 20:14:39

标签: javascript meteor

我需要在子模板中检查在父模板中创建的反应式dict变量的值。

<template name="parent">
    {{ > child }}
</template>

<template name="child">
    {{#if something}}
        checked
    {{/if}}
</template>

这是我将反应性dict变量初始化为父模板的方法:

Template.parent.onCreated(function() {
    this.blabla = new ReactiveDict();
});

因此,对于父模板,此帮助程序正在运行:

Template.parent.helpers({
    anything: function(type) { return (Template.instance().blabla.get('foo') === 'bar') ? true : false; }
});

但它不会为孩子工作:

Template.child.helpers({
    something: function() { return (Template.instance().blabla.get('foo') === 'bar') ? true : false; }
});

那么如何检查子帮助器中变量的值?

1 个答案:

答案 0 :(得分:2)

这个问题的核心是如何找到模板的父实例。我建议您阅读所有答案here

我将以Sacha提出的想法为基础,以此为例:

<强> HTML

<template name="parent">
    {{ > child parentHelper=parentHelper}}
</template>

<template name="child">
  {{#if parentHelper}}
    <h1>pass</h1>
  {{else}}
    <h1>fail</h1>
  {{/if}}
</template>

<强> JS

Template.parent.onCreated(function() {
    this.dict = new ReactiveDict();
    this.dict.set('foo', 'bar');
});

Template.parent.helpers({
  parentHelper: function() {
    return Template.instance().dict.equals('foo', 'bar');
  }
});

如果确切的模式在您的代码中不起作用,您可以尝试上述链接问题中的其他模式。