Я использую Handlebars.js для рендеринга со стороны клиента. Если Else работает отлично, но я столкнулся с трехсторонним условием, требующим ELSE IF:
Это не работает:
{{#if FriendStatus.IsFriend }}
<div class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></div>
{{else if FriendStatus.FriendRequested}}
<div class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></div>
{{else}}
<div class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></div>
{{/if}}
Как мне сделать ELSE IF с рулем?
handlebars.js
reach4thelasers
источник
источник
Ответы:
Handlebars поддерживает
{{else if}}
блоки с 3.0.0.Рули v3.0.0 или выше:
Однако до Handlebars v3.0.0 вам придется либо определить помощника, который обрабатывает логику ветвления, либо
if
операторы вложений вручную:источник
else if
Я обычно использую эту форму:
источник
{{/if}}{{/if}}{{/if}}{{/if}}{{/if}}
Handlebars теперь поддерживает
{{else if}}
начиная с 3.0.0. Поэтому ваш код теперь должен работать.Вы можете увидеть пример в разделе «условные выражения» (слегка пересмотренный здесь с добавлением
{{else}}
:http://handlebarsjs.com/block_helpers.html
источник
{{else if}}
синтаксис.Дух руля заключается в том, что он «не логичен». Иногда это заставляет нас чувствовать, что мы боремся с этим, а иногда мы получаем некрасивую вложенную логику if / else. Вы могли бы написать помощника; многие люди дополняют руль «лучшим» условным оператором или считают, что он должен быть частью ядра . Я думаю, что вместо этого
вы можете расположить вещи в своей модели так, чтобы вы могли иметь это,
Просто убедитесь, что только один из этих флагов верен. Скорее всего, если вы используете это
if/elsif/else
в своем представлении, вы, вероятно, используете его и где-то еще, поэтому эти переменные могут не оказаться лишними.Держите это постным.
источник
Я написал этот простой помощник:
Это что-то вроде цепочки ответственности в руле
Пример:
Это не иначе, если, но в некоторых случаях это может помочь вам)
источник
Встроенные помощники
Вы можете использовать помощник if для условного рендеринга блока. Если его аргумент возвращает false, undefined, null, "", 0 или [], Handlebars не будет визуализировать блок.
шаблон
Когда вы передаете следующий вход в шаблон выше
источник
Здравствуйте, у меня есть только редактирование имени класса MINOR, и до сих пор это то, как я его разгласил. я думаю, что мне нужно передать в несколько параметров кучи помощнику,
server.js
header.handlebars
источник