流星模板查询更改,如何更改数据库中的内容?

时间:2014-02-25 17:54:01

标签: javascript templates meteor

我正在使用meteor的博客,我已经到了搜索部分:现在我想根据搜索条件将数据更改为模板变量。截至目前,我不明白如何使将在模板中呈现的数据重新排序。

这是我现在拥有的: 的 HTML

<template name="posts">
   {{#each post}}
     <div class = "postWrapper">
     <p>{{postTitle}} - <small><em>{{userName}}<em></small></p>
     <p><small>{{postDate}}</small><p>
     <div class="postText">{{safe 'postText'}}</div>
     <br/>
     </div>
   {{/each}}
</template>

的Javascript

Template.posts.post = function(){
   return TestPosts.find({}, {sort: {timeStamp: -1}, limit: 100});
}

如何更改Template.posts.post查询,以便按时间戳以外的其他内容进行排序。我对Template.posts.post查询所做的任何更改在事件被触发时都没有任何结果。

  Template.searchForm.events = {
    "click .cancelBtn": function(){
       $("#lightbox-container, #searchForm, #postForm").hide();
    },
    "click #searchBtn": function(){
        var reply = TestPosts.find({}, {sort: {timeStamp: 1}});
            //what do I need here to be able to change the posts returned 
            //to the template?
    }
  }

我尝试使用meteor.render但它没有做任何事情。任何指导都会很棒。

1 个答案:

答案 0 :(得分:1)

你会想要开始更多地“反应性地”思考,而不是在程序上思考。如果它有帮助,反应性思维有点像陈述性思维。只要声明你想看到的内容,让Meteor弄清楚如何以及何时。

考虑到这一点,这可能对您有用(使排序顺序成为会话变量):

Session.setDefault('sortOrder', {'timestamp': -1});
Template.posts.post = function(){
   return TestPosts.find({}, {sort: Session.get('sortOrder'), limit: 100});
}

Template.searchForm.events = {
  "click .cancelBtn": function(){
     $("#lightbox-container, #searchForm, #postForm").hide();
  },
  "click #searchBtn": function(){
      Session.set('sortOrder', {'timestamp': 1});
  }
}