我有3个人,每个人对同一个问题都有独特的答案。
1个模板显示名称和问题。另一个不同的模板是答案。 (4个模板.1个用于名称/问题,3个其他 - 每个唯一答案1个)。
<template name="people">
{{#each profile }}
<h2>{{ name }}</h2>
<p>{{ question }}</p>
<p>{{> answer }}</p>
{{/each }}
</template>
我想设置一个帮助器,这样当每个profile
循环运行时,我可以插入正确的命名模板(而不是{{> answer }}
,3个不同的模板由它们的名称{{1 },又名{{> nameAnswers }}
。
尝试了这一点,在每个{{> fooAnswers }}
中显示全部3个,而不是每profile
个1个。
profile
注意:<template name="people">
{{#each profile }}
<h2>{{ name }}</h2>
<p>{{ question }}</p>
{{#if nameHelper=Fred }}
{{> fredAnswers }}
{{/if }}
{{#if nameHelper=Ringo }}
{{> ringoAnswers }}
{{/if }}
{{#if nameHelper=Jackson }}
{{> jacksonAnswers }}
{{/if }}
{{/each }}
</template>
模板已经定义为静态html,需要将它们全部插入。
答案 0 :(得分:5)
您无法像=
运算符那样测试相等性。您需要定义一个帮助程序,例如:
UI.registerHelper('equals', function(a, b) {
return a == b; // == intentional
};
然后你可以使用它:
{{#if equals nameHelper 'Ringo'}}
{{> ringoAnswers}}
{{/if}}
答案 1 :(得分:5)
你可以这样做......
使用Blaze
https://github.com/meteor/meteor/wiki/Using-Blaze
<template name="people">
{{#each profile }}
<h2>{{ name }}</h2>
<p>{{ question }}</p>
{{#if isName Fred }}
{{> fredAnswers }}
{{/if }}
{{#if isName Ringo }}
{{> ringoAnswers }}
{{/if }}
{{#if isName Jackson }}
{{> jacksonAnswers }}
{{/if }}
{{/each }}
</template>
Template.people.helpers({
isName:function(name){
return //true or false;
}
})
答案 2 :(得分:3)
{{#if nameHelper=Fred }}
测试Spacebars.kw({nameHelper: view.lookup("Fred")})
是否为真,因为它是一个对象。这就是为什么这三个人都出现的原因。
看起来你有一个帮助器nameHelper
,它返回一个字符串。您可以使用返回模板的帮助程序。假设它是这样的:
Template.people.nameHelper = function () {
// return 'Fred', 'Ringo', or 'Jackson'
};
Template.people.chooseAnswerTemplate = function () {
return {
'Fred': Template.fredAnswers,
'Ringo': Template.ringoAnswers,
'Jackson': Template.jacksonAnswers
}[Template.people.nameHelper.call(this)];
};
并在您的people
模板中
<template name="people">
{{#each profile }}
...
{{> chooseAnswerTemplate}}
{{/each }}
</template>