我正在使用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但它没有做任何事情。任何指导都会很棒。
答案 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});
}
}