在模板使用helper参数
当使用helper解析模板标签中的标识符时,可以为helper函数传入额外的参数。参数有 两种形式:按helper函数声明时在参数列表中的位置传入的参数,称为位置参数;使用 paramKey=paramValue方式传入的与位置无关的参数,称为关键字参数。
≡ 位置参数
插值标签{{}}中的第一个标识符将被解析为helper函数,其后的标识符将被解析为 helper函数的参数,可以使用任意数量的位置参数。
例如模板标签{{calcSalary "jOHN" "2018-07"}},其第一个标识符calcSalary将被解析 为同名的helper函数,后两个标识符"jOHN"和"2018-07"将被解析为helper函数的参数:
calcSalary("jOHN","2018-07")
因此,应当在定义calcSalary helper函数时,声明两个参数:
Template.demo.helpers({
"calcSalary":function(name,month){...}
})
≡ 关键字参数
也可以在模板标签中为第一个标识符使用任意数量的关键字参数,所有相邻的 关键字参数将被合并为一个统一的Spacebars.kw对象传入helper函数。
例如模板标签{{calcSalary "jOHN" "2018-07" overtime=true gender="female"}}, 最后两个表达式都是关键字参数,Meteor进行helper调用时,它们将被转换为一个 Spacebars.kw对象:
calcSalary("jOHN","2018-07",Spacebars.kw({overtime:true,gender:"female"}))
Spacebars.kw(...)创建了一个字典对象,可以在helper函数体内使用其hash 属性访问原始的JSON数据:
Template.demo.helpers({
'calcSalaray' : function(name,month,kwp){
if(kwp.hash.overtime){...}
else{...}
}
});
执行以下命令复位test应用、删除源文件:
~/test$ meteor reset↵
~/test$ rm -rf \*↵
执行以下命令拷贝tpl-helper-args示例代码、运行并查看运行结果:
~/test$ cp ~/demos/tpl-heper-args/* .↵
~/test$ meteor↵
理解并修改tpl-helper-args示例代码,通过练习掌握在Meteor应用中如何定义 并使用有参数的helper函数。