我是流星上的新手,遇到了一些问题。我正在创建一个社交网络应用程序,它的基本作用是注册用户,用户可以发布和关注其他人。那就是它现在执行的基本功能。我要添加的内容是,当用户单击其他用户的个人资料时,它会显示用户发布的内容。但是代码不起作用并且根本不显示任何错误

模板

<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>

10-05 20:19