在 Meteor 中没有文档匹配用户时如何显示占位符文本?
How Do I Display Placeholder Text When No Documents Match User in Meteor?
我有一个脚本可以遍历一组照片文档,检查它们是否与当前用户 ID 匹配,然后呈现模板。
<ul id="settings-photos">
{{#each photos}}
{{#if person}}
{{> photo}}
{{/if}}
{{/each}}
</ul>
如果用户没有照片,我想显示 "Click to upload a photo!" 消息。我将如何以 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>
虽然通过照片收集和检查用户进行循环是可行的,但更好的方法是编写一个 UI/Template 帮助程序来提取用户的照片。这样,如果您最终更改了用户模式或照片集,您只需要更改帮助程序。
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>
JS
Template.templateName.helpers({
isPhoto: function(person){
// your condition
return true/false;
}
});
模板:
{{#if isPhoto person}}
{{> Photo}}
{{else}}
Click to upload a photo!
{{/if}}
我有一个脚本可以遍历一组照片文档,检查它们是否与当前用户 ID 匹配,然后呈现模板。
<ul id="settings-photos">
{{#each photos}}
{{#if person}}
{{> photo}}
{{/if}}
{{/each}}
</ul>
如果用户没有照片,我想显示 "Click to upload a photo!" 消息。我将如何以 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>
虽然通过照片收集和检查用户进行循环是可行的,但更好的方法是编写一个 UI/Template 帮助程序来提取用户的照片。这样,如果您最终更改了用户模式或照片集,您只需要更改帮助程序。
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>
JS
Template.templateName.helpers({
isPhoto: function(person){
// your condition
return true/false;
}
});
模板:
{{#if isPhoto person}}
{{> Photo}}
{{else}}
Click to upload a photo!
{{/if}}