Условный помощник "if statement" для Handlebars.js

Я пытаюсь написать условный, если оператор справки для Handlebars.js. По сути, я хочу поместить "активный" класс в ссылку, если это страница Apply Now.

Helper:

  Handlebars.registerHelper('isApplyNow', function(block) {
    if(this.title == "Apply Now") {
      return block(this);
    } else {
      return block.inverse(this);
    }
  });

И Шаблон:

  <ul>
    {{#each pages}}
      <li>
        {{#isApplyNow}}
          <a href="{{url}}" class ='active'>{{this.title}}</a>
        {{else}}
          <a href="{{url}}">{{this.title}}</a>
        {{/if}}
      </li>
    {{/each}}  
  </ul>

Но, я получаю очень грубую ошибку javascript:

Uncaught [object Object] in handlebars-1.0.0.beta.2.js:595

Может ли кто-нибудь увидеть, если я пишу это неправильно?

Спасибо!

Ссылки:

Вызов помощника в рамках шаблона блокировки ручек

http://thinkvitamin.com/code/handlebars-js-part-2-partials-and-helpers/

Ответы

Ответ 1

Я вижу одну небольшую ошибку синтаксиса, которая, по моему мнению, может быть проблемой. Если вы собираетесь использовать вспомогательный элемент, который принимает блок, вам нужно закрыть его с помощью имени помощника. Посмотрите, как я заменил {{/if}} на {{/isApplyNow}} следующим образом:

    {{#isApplyNow}}
      <a href="{{url}}" class ='active'>{{this.title}}</a>
    {{else}}
      <a href="{{url}}">{{this.title}}</a>
    {{/isApplyNow}}

Ответ 2

Примечание: block (this) в помощнике больше не будет работать. Вместо этого используйте block.fn(this)

например.

 Handlebars.registerHelper('isApplyNow', function(block) {
    if (this.title === "Apply Now") 
      return block.fn(this);
    else 
      return block.inverse(this);
 });