2016-07-07 3 views
0

Пытаясь узнать о специальных помощниках блока и условных помощниках Handlebars, я создал простой пример на jsfiddle. Обычай помощник возвращает истину, но условное выражение не отображается правильно реагировать на значение, переданное из блока помощникаУсловный помощник не ведет себя так, как ожидалось, в Handlebars

<script id="test" type="text/x-handlebars-template"> 
<h3>{{title}}</h3> 
<p>custom helper returns: {{isCategory}}</p> 
<p>conditional result: {{#if isCategory}}yes{{else}}no{{/if}}</p> 
<p><em>I would expect the result to be 'yes'</em></p> 
</script> 

Что не происходит должным образом в этом примере?

ответ

1

Ваш условный {{#if isCategory}} ищет isCategory в вашем объекте данных, а так как его не существует .. False/No.

Условный блок не будет оценивать ваш пользовательский помощник, он будет выглядеть только в объекте данных, переданном в шаблон.

+0

Хорошо, это имеет смысл. Пользовательский помощник возвращает код, который должен быть вставлен в dom; он не может использоваться для других целей, таких как тот, который я пытался. Благодарю. – Greg

+0

Одна вещь, которую вы можете сделать, это написать свой собственный вспомогательный блок условного блока, который вы могли бы использовать вместо '{{#if}}'. Пример этого в проекте, над которым я сейчас работаю. Это SPA, который захватывает все разрешения пользователей при начальной загрузке страницы. Я хочу скрыть или показать некоторые вещи в зависимости от того, имеет ли пользователь требуемое разрешение, поэтому я написал условный помощник, который бы проверил, есть ли у него это. '{{#permission 'CREATE_USERS'}} {{/ permission}' –

+0

Это по существу то, что я пытаюсь выполнить. В вашем примере {{#permission}} вспомогательный блок возвращает логическое значение, которое отображает или скрывает кнопку создания пользователя или возвращает (или нет) кнопку html? – Greg

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