我是流星上的新手,遇到了一些问题。我正在创建一个社交网络应用程序,它的基本作用是注册用户,用户可以发布和关注其他人。那就是它现在执行的基本功能。我要添加的内容是,当用户单击其他用户的个人资料时,它会显示用户发布的内容。但是代码不起作用并且根本不显示任何错误
模板
<template name="profileArea">
{{#if currentUser}}
<div id="side-profile" class="side-box">
<a class="filter-user">{{currentUser.username}}</a>
</div>
{{/if}}
<div id="side-all" class="side-box">
<a class="community">Community</a>
</div>
{{#if currentUser}}
<div id="side-like" class="side-box">
<h3>Following</h3>
<div class="boxcontent">
{{#each username in following}}
<div>
<a class="filter-user">{{username}}</a>
</div>
{{/each}}
</div>
</div>
<div id="side-likeyou" class="side-box">
<h3>Follows You</h3>
<div class="boxcontent">
{{# each followers}}
<div>
<a class="filter-user">{{username}}</a>
</div>
{{/each}}
</div>
</div>
{{/if}}
</template>
码:
Template.profileArea.events({
'click .filter-user': function(event){
event.preventDefault();
var selectedUser = event.target.text;
Session.set('username', selectedUser);
},
'click .community': function(event){
event.preventDefault();
Session.set('username', null);
}
});
Template.postsList.helpers({
posts: function() {
//Stuff should happen here but its not -_-
var result;
if(Session.get('username')){
result = Post.find({username: Session.get('username')}, {sort:{created: -1}});
}
else{
result = Post.find({}, {sort:{created: -1}});
}
return result;
}
});
最佳答案
在这种情况下,问题在于您实际上从未渲染过postsList
模板(仅定义了它)。
如果要真正看到postsList
,则需要从{{> postsList }}
的HTML中的某个地方调用profileArea
。这将渲染该模板,然后您的postsList.posts
帮助器将执行(并在Session.get('username')
时作出反应地更改)更改。
也许在个人资料的“关注您”部分之后添加此内容。
<div id="side-posts" class="side-box">
<h3>Posts</h3>
<div class="boxcontent"> {{> postsList }} <div>
</div>