如何将EJS中带function(pizza)的循环代码转换为等效的hbs实现代码
EJS遍历参数功能的Handlebars实现方案
你写的{{#each}}基础遍历结构是正确的,要实现EJS中function(pizza)的参数获取功能,有两种常用实现方式:
- 方式一:使用默认上下文对象
this
在{{#each pizzas}}块内部,this就对应当前遍历到的单个pizza对象,和EJS里的pizza参数作用完全一致。示例代码如下:
{{#each pizzas}} <!-- 此处为HTML代码,调用pizza属性直接用{{this.属性名}}即可 --> <p>披萨名称:{{this.name}}</p> <p>售价:{{this.price}} 元</p> {{/each}}
- 方式二:自定义变量别名(和EJS写法完全对齐)
如果你不想用this,希望直接使用pizza作为变量名,Handlebars 3.0及以上版本支持as语法自定义遍历项别名,写法如下:
{{#each pizzas as |pizza|}} <!-- 此处的pizza和EJS中function(pizza)的参数完全等价 --> <p>披萨名称:{{pizza.name}}</p> <p>售价:{{pizza.price}} 元</p> {{/each}}
如果需要同时获取遍历索引,和EJS的function(pizza, index)对应,直接扩展别名即可:
{{#each pizzas as |pizza index|}} <p>第{{index + 1}}款披萨:{{pizza.name}}</p> {{/each}}
内容的提问来源于stack exchange,提问作者jasveer singh
相关产品推荐
相关产品推荐

