Javascript 手柄自定义如果等于辅助对象,则不编译
我在Handlebar中添加了一个自定义帮助器,以实现Javascript 手柄自定义如果等于辅助对象,则不编译,javascript,handlebars.js,Javascript,Handlebars.js,我在Handlebar中添加了一个自定义帮助器,以实现if==“some string”类型帮助器。助手代码如下所示: Handlebars.registerHelper('if_eq', function(a, b, opts) { if(a == b) // Or === depending on your needs return opts.fn(this); else return opts.inverse(this); }); <
if==“some string”
类型帮助器。助手代码如下所示:
Handlebars.registerHelper('if_eq', function(a, b, opts) {
if(a == b) // Or === depending on your needs
return opts.fn(this);
else
return opts.inverse(this);
});
<div id="appStoreParametersModal" class="modal-dialog">
<div class="modal-content appStoreParametersModal">
<div class="modal-header hypersignModalHeader">
<h3>{{appName}}</h3>
</div>
<div class="modal-body">
<div id="app-params">
{{#each appParm}}
<form>
{{#if_eq uiControlType "text"}}
<div class="form-group">
<label for="{{qsName}}">{{uiName}}</label>
<input type="text" class="form-control" id="{{qsName}}" placeholder="{{uiName}}"/>
</div>
{{else if_eq uiControlType "dropdown"}}
<div class="form-group">
<label for="{{qsName}}">{{uiName}}</label>
<select class="form-control" id="{{qsName}}">
{{#each defaultVals}}
<option value="{{value}}">{{displayName}}</option>
{{/each}}
</select>
</div>
{{/if_eq}}
</form>
{{/each}}
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-warning cancel" data-dismiss="modal" id="cancel">Cancel</button>
<button type="button" class="btn btn-success" id="appStoreNext">Next</button>
</div>
</div>
</div>
模板如下所示:
Handlebars.registerHelper('if_eq', function(a, b, opts) {
if(a == b) // Or === depending on your needs
return opts.fn(this);
else
return opts.inverse(this);
});
<div id="appStoreParametersModal" class="modal-dialog">
<div class="modal-content appStoreParametersModal">
<div class="modal-header hypersignModalHeader">
<h3>{{appName}}</h3>
</div>
<div class="modal-body">
<div id="app-params">
{{#each appParm}}
<form>
{{#if_eq uiControlType "text"}}
<div class="form-group">
<label for="{{qsName}}">{{uiName}}</label>
<input type="text" class="form-control" id="{{qsName}}" placeholder="{{uiName}}"/>
</div>
{{else if_eq uiControlType "dropdown"}}
<div class="form-group">
<label for="{{qsName}}">{{uiName}}</label>
<select class="form-control" id="{{qsName}}">
{{#each defaultVals}}
<option value="{{value}}">{{displayName}}</option>
{{/each}}
</select>
</div>
{{/if_eq}}
</form>
{{/each}}
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-warning cancel" data-dismiss="modal" id="cancel">Cancel</button>
<button type="button" class="btn btn-success" id="appStoreNext">Next</button>
</div>
</div>
</div>
{{appName}}
{{{#每个appParm}
{{{#如果{键入“文本”}
{{uiName}}
{{else if_eq uiControlType“dropdown”}
{{uiName}}
{{#每个默认值}
{{displayName}}
{{/每个}}
{{/if_eq}
{{/每个}}
取消
下一个
我得到了这个错误:
未捕获错误:如果_eq不匹配
使用
{{else}
似乎有问题,因为如果我只使用if_eq
助手,而没有else
,那么它就可以正常工作。我对车把很陌生,所以我肯定我错过了一些愚蠢的东西。如果当你有{{{if{eq stuff“stuff}}}}}}
时抛出了{/if}
而不是{/if{eq}
,这将建议使用{else}{if}},因为没有其他的话。它对我有用。。。嗯,这很奇怪。我想知道为什么它对我不起作用。也许这和车把的版本有关。我正在开发的应用程序使用的是jquery handlerbars 1.0.0,所以里面可能有一个非常过时的handlerbars版本。是的,看起来就是这样。他们在版本3中添加了elseif的语法,我们远远落后了。在{{{else}中使用{{{if#u eq}}进行嵌套的{{else}似乎解决了这个问题。