大家:)例如我有这样的事情:
{{> someCoolHelper
someParam1='someVal1'
someParam2='someVal2'
someParam3='SomeVal3'
someParam4=someAnotherHelper 'value param to this helper'
}}
所以我有一个函数,根据可以在其中传递的参数计算一些值。那我怎么能这样做呢?
答案 0 :(得分:0)
在Spacebars中提供模板子表达式之前的占位符解决方案是创建一个帮助器,在JS中返回足够的值:
HTML
{{> myTemplate param1="A" param2=param2}}
JS
function someOtherHelper(param){
console.log(param);
}
Template.registerHelper("someOtherHelper", someOtherHelper);
Template.myTemplate.helpers({
param2: function(){
return someOtherHelper("B");
}
});
答案 1 :(得分:0)
您可以使用括号将帮助程序的输出传递给另一个帮助程序。相当确定这是您要追求的: http://blazejs.org/guide/spacebars.html#Calling-helpers-with-arguments
您还可以将帮助程序的输出传递给模板包含项或其他帮助程序。为此,请使用括号显示优先级:
{{> Todos_item (todoArgs todo)}}
此处将待办事项作为参数传递给todoArgs帮助器,然后将输出传递至Todos_item模板。
我在最近的项目中所做的事情使用此功能来允许将CSS类有条件地呈现给组件(为简洁起见,将其简化):
# global helper to provide ternary operator
Template.registerHelper('ternary', (condition, resultTrue, resultFalse) => {
return condition ? resultTrue : resultFalse
})
# in my-template.js:
Template.My_template.helpers({
isComplete(score) {
return score === 1
}
})
# in my-template.html:
{{> some_component class=(ternary (isComplete this.score) "green" "red")}}