使用带参数的助手作为空格键中的助手参数
Using a helper with arguments AS a helper argument in Spacebars
所以我正在尝试使用一个助手作为空格键中另一个助手的参数。在下面的示例中,'getResultInfo' 是一个帮助程序,它获取特定于传递的参数的数据,'formatResult' 是一个帮助程序,它格式化它的结果和其他帮助程序的结果。
<template name="example">
{{#each collectionResults}}
Label: {{formatResult getResultInfo this._id 'text'}}
{{/each}}
</template>
我遇到的问题是 Spacebars 认为 'getResultInfo' 的参数只是 'formatResult' 的第二个和第三个参数。我真的很想将助手的功能分开(即不必在 'getResultInfo' 和我拥有的所有其他助手的末尾格式化结果)。是否有任何替代语法或方法来实现我想要实现的目标?
我认为您不能像您那样在第二个助手上链接两个带参数的助手。后续参数仍将被解释为来自第一个助手的参数。
我看到有两种方法可以解决这个问题:
1) 您可以去掉参数并使用 each
提供的数据上下文。
each
将数据上下文绑定到 this
,因此在 getResultInfo
中您可以直接使用 this._id
。但是你必须记住,每次使用这个助手时你都需要这个数据上下文。这对不依赖于数据上下文的 'text' 参数造成了问题。
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>
仅供参考,现在可以通过 Blaze 中的空格键子表达式在 Meteor 1.2 中实现。
<template name="example">
{{#each collectionResults}}
Label: {{formatResult (getResultInfo this._id 'text')}}
{{/each}}
</template>
所以我正在尝试使用一个助手作为空格键中另一个助手的参数。在下面的示例中,'getResultInfo' 是一个帮助程序,它获取特定于传递的参数的数据,'formatResult' 是一个帮助程序,它格式化它的结果和其他帮助程序的结果。
<template name="example">
{{#each collectionResults}}
Label: {{formatResult getResultInfo this._id 'text'}}
{{/each}}
</template>
我遇到的问题是 Spacebars 认为 'getResultInfo' 的参数只是 'formatResult' 的第二个和第三个参数。我真的很想将助手的功能分开(即不必在 'getResultInfo' 和我拥有的所有其他助手的末尾格式化结果)。是否有任何替代语法或方法来实现我想要实现的目标?
我认为您不能像您那样在第二个助手上链接两个带参数的助手。后续参数仍将被解释为来自第一个助手的参数。
我看到有两种方法可以解决这个问题:
1) 您可以去掉参数并使用 each
提供的数据上下文。
each
将数据上下文绑定到 this
,因此在 getResultInfo
中您可以直接使用 this._id
。但是你必须记住,每次使用这个助手时你都需要这个数据上下文。这对不依赖于数据上下文的 'text' 参数造成了问题。
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>
仅供参考,现在可以通过 Blaze 中的空格键子表达式在 Meteor 1.2 中实现。
<template name="example">
{{#each collectionResults}}
Label: {{formatResult (getResultInfo this._id 'text')}}
{{/each}}
</template>