流星数据上下文 - 模板#each中没有的数据

时间:2014-08-23 15:57:22

标签: meteor

我正在尝试比较两个变量以查看它们是否匹配。

这是为了决定selected是否需要<option> attr。

模板如下所示:

    <select>
        <option disabled>Please choose...</option>
        {{#each themes}}
            <option {{selected}}>{{this.themeName}}</option>
        {{/each}}
    </select>

在模板助手中,我设置了currentTheme var,如下所示:

currentTheme: function() {
    return this.theme;
}

问题在于this此处与this循环中的#each不同,而{{currentTheme}}内的#each则无效。基本上,我无法将currentThemethis.themeName进行比较,看看它们是否相同,因为总是未定义:(

所以......我想知道我必须在

内做些什么
selected: function() {
    // ???
}

非常感谢!

2 个答案:

答案 0 :(得分:2)

正如本Discover Meteor blog post所述,自Meteor 0.8以来,您可以使用..关键字将父上下文作为参数传递给模板助手。

<select>
    <option disabled>Please choose...</option>
    {{#each themes}}
        <option {{selected ..}}>{{this.themeName}}</option>
    {{/each}}
</select>
selected: function(parentContext) {
  return this.themeName === parentContext.theme ? "selected" : '';
}

在这种情况下,如果您只是为此功能使用currentTheme模板帮助器,则不需要它。

答案 1 :(得分:0)

您可以使用UI._parentData()

selected: function() {
    // ???
    var dataOutsideEach = UI._parentData(1);

    if(currentTheme && this.theme) return "selected";

}

如果这不起作用,请尝试删除&#39; 1&#39;并放置&#39; 0&#39;或者&#39; 2&#39;相反(不太确定哪个)。整数表示通过查找数据上下文的父视图数。