这是您在“控制器”中解决的问题,这是无逻辑模板的重点。
// 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模板上维护那个url还是一个单一的DEFAULTS设置对象?;)
另一种选择是执行以下操作:
// augment view
view.hasAvatar = !!view.avatar;
view.noAvatar = !view.avatar;
在模板中:
{{#hasAvatar}}
SHOW AVATAR
{{/hasAvatar}}
{{#noAvatar}}
SHOW DEFAULT
{{/noAvatar}}
但这违背了无逻辑模板的全部含义。如果这就是你想要做的,你想要逻辑模板,你不应该使用 Mustache,尽管给自己一个公平的机会来学习这个概念;)