2

我在Handlebars中添加了一个自定义助手,以完成if==“一些字符串”键入helper。助手代码如下:

Handlebars.registerHelper('if_eq',函数(a,b,opts){if(a==b)//或===取决于您的需求返回opts.fn(this);其他的返回opts.inverse(this);});

模板如下:

<div id=“appStoreParametersModal”class=“modal-dialog”><div class=“modal-content appStoreParametersModal”><div class=“模态标头hypersignModalHeader”><h3>{{appName}}</h3></div><div class=“modal-body”><div id=“app-params”>{{#each appParm}}<表格>{{#if_eq-uiControlType“文本”}}<div class=“form-group”><label for=“{{qsName}}”>{{uiName}}</label><input type=“text”class=“form-control”id=“{{qsName}}”placeholder=“{{uiName}”/></div>{{else if_eq uiControlType“下拉列表”}}<div class=“form-group”><label for=“{{qsName}}”>{{uiName}}</label><select class=“form-control”id=“{{qsName}}”>{{#each defaultVals}}<option value=“{{value}}”>{{displayName}}{{/each}}</选择></div>{{/if-eq}}</form>{{/each}}</div></div><div class=“modal-footer”>取消下一步</div></div></div>

我收到这个错误:

未捕获错误:if_eq不匹配每个

使用{{else}},因为如果我只使用如果(_eq)没有其他的,然后就可以了。我对Handlebars很陌生,所以我肯定我错过了一些愚蠢的东西。

4
  • 这建议使用{{else}}{{#if…}},因为没有elseif。stackoverflow.com/questions/10736907/handlebars-js-else-if
    – 卢佩
    评论 2015年8月8日21:39
  • 这对我很有效。。。codepen.io/anon/pen/pJYEpQ 评论 2015年8月8日21时41分
  • 嗯,这很奇怪。我想知道为什么它对我不起作用。也许它与Handlebars的版本有关。我正在开发的应用程序使用的是jquery-handlerbars 1.0.0,因此其中可能有一个非常过时的车把版本。
    – 云游者
    评论 2015年8月8日23:53
  • 是的,看起来就是这样。他们在版本3中添加了else if的语法,我们远远落后了。在嵌套的{{else}}中使用{{#if_eq}}似乎已经解决了这个问题。
    – 云游者
    评论 2015年8月8日23:57

1答案1

重置为默认值
14

if_eq不匹配if当你有{{#ifeq材料“材料”}}但你错误地结束了{{/if}}而不是{{/if-eq}}.

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.