Как мне выполнить if / else в усах.Джей?
Это кажется довольно странным, что я не могу понять как это сделать в усы. Это поддерживается?
Это моя печальная попытка попробовать:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{#!avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
это, очевидно, не так, но в документации ничего подобного не упоминается. Слово "еще" даже не упоминается :(
кроме того, почему усы разработаны таким образом? Это считается плохим? Он пытается заставить меня установить значение по умолчанию в самой модели? А как насчет случаев, когда это невозможно?
3 ответа:
вот как вы делаете, если / else в усах (отлично поддерживается):
{{#repo}} <b>{{name}}</b> {{/repo}} {{^repo}} No repos :( {{/repo}}
или в вашем случае:
{{#author}} {{#avatar}} <img src="{{avatar}}"/> {{/avatar}} {{^avatar}} <img src="/images/default_avatar.png" height="75" width="75" /> {{/avatar}} {{/author}}
ищите перевернутые разделы в документах:https://github.com/janl/mustache.js
Это то, что вы решаете в "контроллере", который является точкой логического шаблона.
// some function that retreived data through ajax function( view ){ if ( !view.avatar ) { // DEFAULTS can be a global settings object you define elsewhere // so that you don't have to maintain these values all over the place // in your code. view.avatar = DEFAULTS.AVATAR; } // do template stuff here }
это на самом деле намного лучше, чем поддерживать url-адрес изображения или другие носители, которые могут или не могут измениться в ваших шаблонах, но требуется некоторое привыкание. Дело в том, чтобы отучиться от шаблона туннельного видения, url-адрес Аватара img обязательно будет использоваться в других шаблонах, вы собираетесь поддерживать этот url-адрес в шаблонах X или в одном объекте настроек по умолчанию? ;)
другой вариант-сделать следующее:
// augment view view.hasAvatar = !!view.avatar; view.noAvatar = !view.avatar;
и в шаблоне:
{{#hasAvatar}} SHOW AVATAR {{/hasAvatar}} {{#noAvatar}} SHOW DEFAULT {{/noAvatar}}
но это идет вразрез со всем смыслом логических шаблонов. Если это то, что вы хотите сделать, вы хотите логические шаблоны, и вы не должны использовать усы, хотя дать ему себя справедливый шанс изучить эту концепцию ;)