我有一个脚本,它运行一系列照片文档,检查它们是否与当前用户ID匹配,然后呈现模板。
<ul id="settings-photos">
{{#each photos}}
{{#if person}}
{{> photo}}
{{/if}}
{{/each}}
</ul>
如果用户没有照片,我想显示一个&#34;点击上传照片!&#34;信息。我如何用Spacebars / Meteor方式为此写一个条件?
我的person
帮助程序代码如下
person : function () {
user = Meteor.userId();
photoUser = this.user;
console.log(this);
if(user == photoUser) {
return true;
}
}
编辑:我接受了导致我解决方案的答案。我的最后一个剧本是
photos : function () {
var id = Meteor.userId();
var photos = Photos.find({user: id}).fetch();
return photos;
}
然后在HTML中
<ul id="settings-photos">
{{#each photos}}
{{> photo}}
{{/each}}
{{#unless photos}}
Click to upload an image
{{/unless}}
</ul>
答案 0 :(得分:1)
虽然通过照片收集和检查用户进行循环可以正常工作,但更好的方法是编写一个UI /模板助手来提取用户的照片。这样,如果您最终更改用户或照片集的架构,您只需要更改帮助程序。
Template.registerHelper(userPhoto, function(userId){
var userPhoto = Photos.findOne({person: userId});
if(userPhoto && userPhoto.photoUrl) {
return userPhoto.photoUrl;
}
})
通过这种方式,您可以更清晰地编写模板。如,
<ul id="settings-photos">
{{#if userPhoto currentUser._id}}
{{> userPhoto currentUser._id}}
{{else}}
<a href="#">No Photos found. Click here to upload</a>
{{/if}}
</ul>
原始答案:
<ul id="settings-photos">
{{#each photos}}
{{#if person}}
{{> photo}}
{{/if}}
{{/each}}
{{#unless photos}}
<a href="#">No Photos found. Click here to upload</a>
{{/unless}}
</ul>
答案 1 :(得分:0)
JS
Template.templateName.helpers({
isPhoto: function(person){
// your condition
return true/false;
}
});
模板:
{{#if isPhoto person}}
{{> Photo}}
{{else}}
Click to upload a photo!
{{/if}}