我有一个带<#each>。
的模板 <template name="listing">
{{#each adList}}
{{> adItemTemplate}}
{{/each}}
</template>
我将数据发送到&lt;#each&gt;使用此代码:
Template.listing.adList = function(){
return listingDB.find()
}
这给了我很好的文章清单。但是,我有一个缩小列表的按钮。
listingDB.find({location:"newyork"})
我试图用一个事件来做但没有任何反应:
Template.narrowSearch.events({
"click .search":function(){
listingDB.find({location:"newyork"})
}
})
我缺少什么?
THX,
答案 0 :(得分:1)
要记住两件事:
您的模板只会呈现辅助函数返回的内容,并且您的代码中没有任何内容会改变它的内容。您在事件处理程序中运行一个完全独立的数据库查询,其结果将不会出现在任何地方。
为了让模板助手在您更改某些设置时重新运行被动,它需要依赖于reactive data source。
所有这一切的结果是你应该做的事情:
Session.set("query", {});
Template.listing.adList = function() {
return listingDB.find(query);
}
Template.narrowSearch.events({
"click .search":function() {
Session.set(query, {
location: "newyork"
});
}
})
请注意,会话变量不是提供此反应性的唯一(或必然是正确的)方式 - 如果您想要更私密的内容,请使用ReactiveVar。
答案 1 :(得分:0)
Template.listing.adList = function(){
var query = Session.get('query') || {};
return listingDB.find(query);
}
Template.narrowSearch.events({
"click .search":function(){
Session.set(query, {location: 'newyork'});
}
})