我的MongoDB查询中有一个Sessions.get()
。这意味着显示的集合取决于Sessions.get()
值。为了让您更清楚地了解我的意思,请在下面查找查询内容:
Template.paymentB2C.onCreated( function(){
Session.set('pendingFilter', [ "Pending", "Failed", "Success" ]);
});
。
Template.paymentB2C.helpers({
'showTransactions': function(){
var transactions = paymentDetails.find({
paymentStatus:{$in: Session.get('Filter')}
}).fetch();
return transactions;
}
});
上面的代码显示交易列表。所显示的交易列表因交易类型而异,提示:失败,成功,待处理交易,如下所示:
0:
payersName: "Sa Acea"
paymentStatus: "Success"
_id: "D3gY4BoR2tvxdK4xv"
1:
payersName: "Paul Acea"
paymentStatus: "Pending"
_id: "ajCjYbLaDP7x4iAFK"
2:
payersName: "Simon Bolton"
paymentStatus: "Success"
_id: "K4d6wDrjRRdSyCkhW"
因此, I使用Filter
会话值作为过滤器来指示要显示的交易类型。
我可以通过以下事件在三种过滤器之间互换。在代码下方找到。
Template.paymentB2C.events({
'click .ShowFailedTransactions' (event, instance) {
event.preventDefault();
Session.set('Filter', [ "Failed" ]);
},
'click .ShowSuccessfulTransactions' (event, instance) {
event.preventDefault();
Session.set('Filter', [ "Success" ]);
},
'click .ShowPendingTransactions' (event, instance) {
event.preventDefault();
Session.set('Filter', [ "Pending" ]);
},
});
注意,该集合中没有失败交易类型。因此,我感到很奇怪的是,每当我选择失败过滤器'click .ShowFailedTransactions'
期望所期望的效果是空白页时,该页面便无法更新并继续来显示上一个查询的结果,就好像我从未单击过'click .ShowFailedTransactions'
。
我认为Session.set('Filter', [ "Failed" ])
函数中的'click .ShowFailedTransactions'
无效,因此我添加了console.log();
以打印出 Filter 会话 value < / strong>,如下所示:
'click .ShowFailedTransactions' (event, instance) {
event.preventDefault();
Session.set('Filter', [ "Failed" ]);
var displaySession = Session.get('Filter');
console.log("Filter Value is: " +displaySession );
},
上面的代码在浏览器控制台中产生Filter Value is: Failed
,表明 Filter 会话值已按预期更新。
我很困惑为什么页面无法对此进行响应/更新。
请帮助为该问题提供解决方案。
答案 0 :(得分:0)
您的代码中的问题是fetch
,它不是被动的!好消息是您不需要它。试试这个:
Template.paymentB2C.helpers({
'showTransactions': function(){
return paymentDetails.find({paymentStatus: {$in: Session.get('Filter')}});
}
});