0
我已經在Handlebars中添加了一個自定義助手來完成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>
我得到這個錯誤:
Uncaught Error: if_eq doesn't match each
這似乎是與使用{{else}}
一個問題,因爲如果我只使用沒有else
的if_eq
幫手,那麼它工作正常。我對Handlebars非常陌生,所以我確信我錯過了一些愚蠢的東西。當你有{{#if_eq stuff "stuff"}}
這將建議使用{{else}} {{#if ...}},因爲沒有其他的if。 http://stackoverflow.com/questions/10736907/handlebars-js-else-if – Roope
它爲我工作... http://codepen.io/anon/pen/pJYEpQ – VLS
好吧,那很奇怪。我想知道爲什麼它不適合我。也許它與Handlebars的版本有關。我正在使用的應用程序使用jquery-handlerbars 1.0.0,所以它可能有一個非常過時的版本的句柄。 – cloudwalker