所以我尝试使用帮助器作为Spacebars中另一个帮助器的参数。在下面的示例中,' getResultInfo'是一个帮助程序,可以获取特定于传递的参数的数据,并且' formatResult'是一个帮助器,它可以格式化其结果和其他助手的结果。
<template name="example">
{{#each collectionResults}}
Label: {{formatResult getResultInfo this._id 'text'}}
{{/each}}
</template>
我遇到的问题是Spacebars认为“getResultInfo&#39;是&#39; formatResult&#39;的第二个和第三个参数。我真的很想让帮助者的功能分开(即,不必在&getffesInfo&#39;以及我拥有的每一个其他助手的末尾格式化结果)。是否有任何替代语法或方法来做我想要实现的目标?
答案 0 :(得分:1)
我认为你不能像你一样在第二个上链接两个带参数的助手。后续参数仍将被解释为来自第一个助手的参数。
我认为有两种方法可以解决这个问题:
1)您可以摆脱参数并使用each
提供的数据上下文。
each
将数据上下文绑定到this
,因此在getResultInfo
中您可以直接使用this._id
。但是您必须记住,每次使用此帮助程序时都需要此数据上下文。这会对“文本”造成问题。参数不依赖于数据上下文。
2)你可以创建一个与你的getResultInfo
助手相对应的功能,并直接在formatResult
助手中使用它,如下所示:
getResultHelper = function(id, text) {
//do what you want
};
//bind the function to your getResultInfo (example with a global helper)
Template.registerHelper('getResultInfo', getResultHelper);
//use the function in your template helper
Template.example.helpers({
formatResult: function(format) {
return getResultHelper(this._id, format);
}
});
//and finally your template
<template name="example">
{{#each collectionResults}}
Label: {{formatResult 'text'}}
{{/each}}
</template>
答案 1 :(得分:0)
仅供参考,现在可以通过Blaze中的Spacebars子表达式在Meteor 1.2中实现。
<template name="example">
{{#each collectionResults}}
Label: {{formatResult (getResultInfo this._id 'text')}}
{{/each}}
</template>