我正在尝试比较两个变量以查看它们是否匹配。
这是为了决定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
则无效。基本上,我无法将currentTheme
与this.themeName
进行比较,看看它们是否相同,因为总是未定义:(
所以......我想知道我必须在
内做些什么selected: function() {
// ???
}
非常感谢!
答案 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;相反(不太确定哪个)。整数表示通过查找数据上下文的父视图数。