2017-02-07 2 views
1

У меня есть простой шаблон руля:Как выполнить функцию объекта внутри шаблона

'<h1>Order number: {{orderNumber}}</h1>' 

Это работает отлично.

Теперь у меня есть ситуация, когда объект, переданный им для рендеринга, имеет функцию возврата себя id. Это происходит следующим образом:

'<h1>Order number: {{orderNumber}}</h1><h2>Order ID:{{getId()}}</h2>' 

Как я могу сделать handlebar выполнить getId() и вместо этого поместить его значение?

Моя неудачная попытка.

Шаблон:

'<h4>Order number: {{orderNumber}}</h4><h4>{{#getId }}</h4>' 

Registered функция:

hbs.registerHelper('getId', function(param, opts) { 
    //return param.getId() 
    return 666; 
}); 

Независимо от того, что я стараюсь я всегда получаю эту ошибку:

"Parse error on line 1:\n...{{#getId }}\n-----------------------^\nExpecting 'OPEN_INVERSE_CHAIN', 'INVERSE', 'OPEN_ENDBLOCK', got 'EOF'"

Если удалить GetId из шаблона, то он работает так, как ожидалось.

ответ

1

Прежде всего, необходимо создать новый помощник Рули:

Handlebars.registerHelper('getId', function(param, opts) { 
    return 1; 
}); 

Тогда вы можете вызвать его с помощью:

<span>{{getId someParam}}</span> 
+0

Я пытался, и не могу заставить его работать. Не могли бы вы проверить мой вопрос? –

+0

Используете ли вы этот синтаксис для вызова helper '{{#getId someParam}}'? Нет '()', '#' при начале. 'Handlebars.registerHelper' - также важно, это глобальная регистрация – VadimB

+0

Да, я это делаю. Точно так же, как в моем отредактированном вопросе. –