Кажется довольно странным, что я не могу понять, как это сделать с усами. Это поддерживается?
Это моя грустная попытка:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{#!avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
Это, очевидно, неправильно, но в документации ничего подобного не упоминается. Слово «еще» даже не упоминается :(
Кроме того, почему усы разработаны таким образом? Такого рода вещи считаются плохими? Это пытается заставить меня установить значение по умолчанию в самой модели? Как насчет случаев, когда это невозможно?
javascript
templates
mustache
egervari
источник
источник
{{#each items}}{{#unless @first}}Output comma before 2nd, 3rd, 4th...{{/unless}}{{/each}}
, более читабельна, намного чище, и все еще остается презентацией. «Без логики» - это руководство, оно не должно быть смирительной рубашкой.mustache
Ответы:
Вот как вы делаете if / else в Mustache (отлично поддерживается):
Или в вашем случае:
Ищите перевернутые разделы в документах: https://github.com/janl/mustache.js
источник
if (condition){ //do something}
следовать заif (!condition){//do something else}
. Кроме того, количество логики, которую можно выполнять в логике, чрезвычайно уменьшено по сравнению с языком на основе логики. Существование или несуществование являются единственными проверками, т.е. вы не можете проверить, равно ли значение тега 5, и затем попасть в код этого тега.Это то, что вы решаете в «контроллере», что является точкой логических шаблонов.
На самом деле это НАМНОГО лучше, чем сохранение URL-адресов изображений или других носителей, которые могут измениться или не измениться в ваших шаблонах, но к этому нужно привыкнуть. Смысл в том, чтобы отучить видение туннеля от шаблонов, аватар img url обязательно будет использоваться в других шаблонах, собираетесь ли вы сохранить этот URL в шаблонах X или в отдельном объекте настроек DEFAULTS? ;)
Другой вариант - сделать следующее:
И в шаблоне:
Но это идет вразрез со всем смыслом логических шаблонов. Если это то, что вы хотите сделать, вы хотите логических шаблонов и не должны использовать усы, хотя сами дайте себе шанс изучить эту концепцию;)
источник
Ваше утверждение else должно выглядеть следующим образом (обратите внимание
^
):В усах это называется «перевернутые участки».
источник
Вы можете определить помощника в представлении. Однако условная логика несколько ограничена. Moxy-Stencil ( https://github.com/dcmox/moxyscript-stencil ), кажется, решает эту проблему с помощью «параметризованных» помощников, например:
{{isActive param}}
и в представлении:
view.isActive = function (path: string) {return path === this.path? "class = 'active'": ''}
источник
Обратите внимание, вы можете использовать
{{.}}
для визуализации текущего элемента контекста.источник