我想在Meteor中创建一个仪表板,其中显示了有关我的馆藏的一些统计信息(例如,有多少文档,有多少用户......)。我过去几天一直在尝试,但似乎无法找到一个好的/聪明的方式。
我最初刚刚做了以下事情:
Template.dashboard.helpers({
getProductsCount: function() {
return Products.find().count();
}
});
这不起作用。我认为因为它计算了来自minimongo的产品数量,但不确定。
然后我做了以下事情:
然后我读了另一个关于Reactive Variables的SO回复,并尝试了以下内容:
Template.dashboard.helpers({
getProductsCount: function() {
return Template.instance().myAsyncValue.get();
}
});
Template.dashboard.created = function() {
var self = this;
self.myAsyncValue = new ReactiveVar("Waiting for response from server");
Meteor.call('getProductsCount', function(error, asyncValue){
if (error)
console.log(error);
else
self.myAsyncValue.set(asyncValue);
});
};
这很有效,但我发现这对于显示产品数量(或任何其他指标)这样简单的事情非常困难。不确定我理解为什么我应该用sth作为反应变量?
然后出于好奇心 - 我尝试了以下(使用 meteor add simple:reactive-method )并且它可以工作:
Template.customerDashboard.helpers({
getProductsCount: function () {
return ReactiveMethod.call("getProductsCount");
}
});
所以这个问题确实是为什么必须使用Reactive变量和方法,就像这样简单。有人可以解释一下吗?
答案 0 :(得分:0)
如果您只想在视图中显示count
,最好的方法是仅返回计数。你根本不需要发布/订阅。你可以使用服务器方法。如果你想显示数据,你可以去pub-sub。你的方法是正确的。