Estou usando o Handlebars.js para renderização de exibição do lado do cliente. Se Else funcionar bem, mas eu encontrei uma condicional de 3 vias que requer ELSE IF:
Isso não funciona:
{{#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}}
Como eu faço ELSE SE com guidão?
handlebars.js
reach4thelasers
fonte
fonte
Respostas:
O guidão suporta
{{else if}}
blocos a partir do 3.0.0.Guiador v3.0.0 ou superior:
Antes do Handlebars v3.0.0, no entanto, você precisará definir um auxiliar que manipule a lógica de ramificação ou aninhar
if
manualmente as instruções:fonte
else if
Eu costumo usar este formulário:
fonte
{{/if}}{{/if}}{{/if}}{{/if}}{{/if}}
O guidão agora suporta
{{else if}}
partir do 3.0.0. Portanto, seu código agora deve funcionar.Você pode ver um exemplo em "condicionais" (ligeiramente revisado aqui com uma adição
{{else}}
:http://handlebarsjs.com/block_helpers.html
fonte
{{else if}}
sintaxe.O espírito do guidão é que ele é "sem lógica". Às vezes, isso nos faz sentir como se estivéssemos lutando com ela, e às vezes acabamos com uma lógica if / else aninhada feia. Você poderia escrever um ajudante; muitas pessoas aumentam o guidão com um operador condicional "melhor" ou acreditam que ele deve fazer parte do núcleo . Eu acho que, em vez disso,
convém organizar as coisas no seu modelo para que você possa ter isso,
Apenas certifique-se de que apenas uma dessas bandeiras seja verdadeira. As chances são de que, se você estiver usando isso
if/elsif/else
na sua visualização, provavelmente também o estiver usando em outro lugar, portanto, essas variáveis podem não acabar sendo supérfluas.Mantenha-o magro.
fonte
Eu escrevi este ajudante simples:
É algo como o padrão de cadeia de responsabilidade no guidão
Exemplo:
Não é outra coisa, mas, em alguns casos, isso pode ajudá-lo)
fonte
Ajudantes internos
Você pode usar o auxiliar if para renderizar um bloco condicionalmente. Se o argumento retornar falso, indefinido, nulo, "", 0 ou [], o Handlebars não renderizará o bloco.
modelo
Quando você passa a seguinte entrada para o modelo acima
fonte
Olá, tenho apenas uma edição MENOR do nome da classe e, até agora, foi assim que a divulgamos. acho que preciso passar parâmetros de várias pilhas para o ajudante,
server.js
header.handlebars
fonte