ege*_*ari 247 javascript templates mustache
似乎很奇怪,我无法想象如何在胡子中做到这一点.是否支持?
这是我尝试的悲伤尝试:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{#!avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
Run Code Online (Sandbox Code Playgroud)
这显然是不对的,但文档中没有提到这样的事情.甚至没有提到"其他"这个词:(
另外,为什么胡子是这样设计的?这种事情被认为是坏事吗?它是否试图强迫我在模型中设置默认值?那些不可能的情况怎么样?
Ene*_*nso 478
这就是你在Mustache中做/ if的方法(完全支持):
{{#repo}}
<b>{{name}}</b>
{{/repo}}
{{^repo}}
No repos :(
{{/repo}}
Run Code Online (Sandbox Code Playgroud)
或者在你的情况下:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{^avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
Run Code Online (Sandbox Code Playgroud)
在文档中查找倒置部分:https://github.com/janl/mustache.js
BGe*_*sen 53
这是你在"控制器"中解决的问题,这是无逻辑模板的要点.
// 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
}
Run Code Online (Sandbox Code Playgroud)
这实际上比维护图像网址或其他可能或可能不会在模板中更改的媒体更好,但需要一些时间来适应.关键是要忘记模板隧道视觉,必须在其他模板中使用头像img url,你要在X模板或单个DEFAULTS设置对象上维护该URL吗?;)
另一种选择是执行以下操作:
// augment view
view.hasAvatar = !!view.avatar;
view.noAvatar = !view.avatar;
Run Code Online (Sandbox Code Playgroud)
在模板中:
{{#hasAvatar}}
SHOW AVATAR
{{/hasAvatar}}
{{#noAvatar}}
SHOW DEFAULT
{{/noAvatar}}
Run Code Online (Sandbox Code Playgroud)
但这违背了无逻辑模板的全部含义.如果这就是你想要做的,你想要逻辑模板,你不应该使用Mustache,尽管给自己一个公平的机会学习这个概念;)
小智 14
你的其他陈述应该是这样的(注意^):
{{^avatar}}
...
{{/avatar}}
Run Code Online (Sandbox Code Playgroud)
在小胡子中,这被称为"倒置部分".
请注意,您可以使用{{.}}来呈现当前上下文项。
{{#avatar}}{{.}}{{/avatar}}
{{^avatar}}missing{{/avatar}}
Run Code Online (Sandbox Code Playgroud)