Meteor开发平台入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

在模板使用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函数。