2015-08-08 2 views
0

Я добавил пользовательский помощник в Handlebars, чтобы выполнить вспомогательный тип if == "some string". Помощник кода заключается в следующем:Handlebars custom if equals helper не компилируется

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}}, потому что, если я использую только вспомогательный помощник if_eq без else, тогда он отлично работает. Я довольно новичок в Handlebars, поэтому я уверен, что мне не хватает чего-то глупого.

+0

Это предполагает использование {{else}} {{#if ...}}, потому что нет другого, если. http://stackoverflow.com/questions/10736907/handlebars-js-else-if – Roope

+0

Это работает для меня ... http://codepen.io/anon/pen/pJYEpQ – VLS

+0

Ну, это странно. Интересно, почему это не работает для меня. Возможно, это связано с версией Handlebars. Приложение, над которым я работаю, использует jquery-handlerbars 1.0.0, так что, вероятно, в нем есть очень устаревшая версия рулей. – cloudwalker

ответ

5

if_eq doesn't match if отбрасывается, когда у вас есть {{#if_eq stuff "stuff"}} но закончить его по ошибке в {{/if}} вместо {{/if_eq}}.

Смежные вопросы