我已经通过发布和订阅编写了一个简单的搜索,我可以通过console.log看到搜索结果在服务器和客户端中正确显示,但是我的模板似乎没有重新呈现自己,尽管有一个跟踪依赖。下面是客户端,发布和模板onRendered调用的代码。
Template.list_customers.onRendered(function(event){
console.log('Inside Rendered');
Template.list_customers.__helpers[" getMyCustomers"]();
//eventsUI.changed();
eventsUI.changed();
});
Template.list_customers.helpers({
getMyCustomers: function(searchTerm) {
console.log('Search Term is ', searchTerm);
// //Get the current user and its BP Id
Meteor.subscribe("getUser", Meteor.userId());
currentUser = Meteor.users.find({
_id: Meteor.userId()
}).fetch();
currentUserBPId = currentUser[0].profile.BusinessPartnerId;
//Get all the BP's which the logged in BP sells to
Meteor.subscribe("getCustomerRelations", currentUserBPId);
customer_cursor = BusinessPartnerRelations.find({
"bp_subject": currentUserBPId,
"relation": "sells_to"
}).fetch();
bp_predicates = customer_cursor.map(function(c) {
return c.bp_predicate[0]
});
Deps.autorun(function() {
handlePagination = Meteor.subscribeWithPagination("getCustomers", bp_predicates, 25,searchTerm);
});
if(searchTerm){
console.log(searchTerm);
customers = BusinessPartners.find({
score:{"$exists":true}
}).fetch();
}
else {
customers = BusinessPartners.find({
_id: { $in: bp_predicates }
}, {
sort: {
name
}
}).fetch();
}
console.log(customers);
return customers;
}
Template.list_customers.events({
'click #btnSearch': function(event) {
searchTerm = $('#customerSearch').val();
Template.list_customers.__helpers[" getMyCustomers"](searchTerm);
//eventsUI.changed();
}
});
Meteor.publish("getCustomers",function(customerIds,limit,searchTerm){
if(!searchTerm){
return BusinessPartners.find({
_id:{$in:customerIds}
},{limit:limit});
this.ready();
}
else{
customers = BusinessPartners.find({
_id:{$in:customerIds},
$text:{$search:searchTerm}
},
{fields:{score:{$meta:"textScore"}},
sort:{score:{$meta:"textScore"}}
},
{limit:limit});
console.log('Server side ', customers.fetch(), customers.count());
return customers;
this.ready();
}
});
答案 0 :(得分:0)
如percolate:paginated-subscription
documentation中所述:
分页订阅希望您具有发布设置,如 normal,它希望作为最终参数的当前数量 要显示的文件
这里的重要词是“最终”。因此,您的发布函数应该以{{1}}作为最终参数,不是第二个:
limit