试图在Meteor JS中解决问题。我试图将Meteor.call结果对象传回模板。这是我的代码:
<template name="showTotals">
<div class="container">
{{#each recordCnt}}
{{/each}}
</div>
</template>
//get a count per item
Template.showTotals.recordCnt = function(){
Meteor.call('getCounts', function(err, result) {
if (result) {
//console.log(result); <-this shows object in javascript console
return result;
}
else {
console.log("blaaaa");
}
});
}
Meteor.startup(function () {
Meteor.methods({
getCounts: function() {
var pipeline = [{$group: {_id: null, count: {$sum : 1}}}];
count_results = MyCollection.aggregate(pipeline);
return count_results;
}
});
});
MyCollection = new Meteor.Collection('folks');
我尝试为调用结果添加console.log(结果),并在javascript控制台中显示预期结果。但是我无法将其填充到recordCnt中。
有什么想法吗?
答案 0 :(得分:-1)
你不能按照你想要的方式去做,因为来自Meteor.call
的回调是异步运行的。
但是,您可以使用回调来设置会话值,并让帮助者改为Session.get()
。
Template.showTotals.rcdCount = function() {
return Session.get('rcdCount');
}
Template.showTotals.rendered = function() {
Meteor.call('getCounts', function(err, result) {
if (result) {
Session.set('rcdCount', result);
}
else {
console.log("blaaaa");
}
});
}
请参阅here以获得类似的答案,其中包含一个“hacky”方式的示例。