如何在mustache.js中完成if / else?

我不知道如何在小胡子里做这件事,似乎很奇怪。 它是否支持?

这是我试图尝试的悲伤尝试:

{{#author}} {{#avatar}} <img src="{{avatar}}"/> {{/avatar}} {{#!avatar}} <img src="http://img.dovov.comdefault_avatar.png" height="75" width="75" /> {{/avatar}} {{/author}} 

这显然是不正确的,但文件没有提到这样的事情。 单词“其他”甚至没有提到:(

另外,为什么这样devise小胡子呢? 这种事情是不好的? 是否试图强迫我在模型中设置默认值? 怎么样的情况下,这是不可能的?

这是你如何做/如果在胡须(完全支持):

 {{#repo}} <b>{{name}}</b> {{/repo}} {{^repo}} No repos :( {{/repo}} 

或者在你的情况下:

 {{#author}} {{#avatar}} <img src="{{avatar}}"/> {{/avatar}} {{^avatar}} <img src="http://img.dovov.comdefault_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或其他媒体,可能会或可能不会改变你的模板,但需要一些习惯。 关键是要清楚模板隧道视觉,一个化身img url绑定在其他模板中使用,你要保持在X模板或单个DEFAULTS设置对象的url? ;)

另一个select是做以下事情:

 // augment view view.hasAvatar = !!view.avatar; view.noAvatar = !view.avatar; 

并在模板中:

 {{#hasAvatar}} SHOW AVATAR {{/hasAvatar}} {{#noAvatar}} SHOW DEFAULT {{/noAvatar}} 

但这是违背无逻辑模板的全部意义的。 如果这就是你想要做的,你想要逻辑模板,你不应该使用胡子,但给自己一个公平的机会,学习这个概念;)

你的其他陈述应该是这样的(注意^ ):

 {{^avatar}} ... {{/avatar}} 

在胡子,这被称为“倒立部分”。