为什么我的帮助器不会返回任何有用的东西 - 它返回undefined

时间:2016-11-20 19:45:48

标签: asynchronous meteor callback helpers

我有这段代码

/* Template Helpers Start */
    Template.ParticipationList.helpers({
        getAllParticipants: function(){
        var activityid = this._id;

        Meteor.call('participation.findParticipants', activityid, function(error, result){
            if(error){
                console.log(error)
            }
            return result;
        });

        }
    });

如果我将数组和return关键字放在流星调用之外,那么一切都很好 - 它将名称绑定到模板。但是,如果是上述情况,则没有任何内容与模板绑定。 我认为这与异步有关......但我做错了什么。

更新

 <ul>
    {{#each getAllParticipants}}
        {{name}}
    {{/each}}
</ul>

1 个答案:

答案 0 :(得分:1)

&#34;结果&#34;不会在数据中。 这是常规的异步编程。 您想对数据做什么? 您可以将其放入应用程序的其他部分的反应变量中。

Meteor.call('myMethod', functoin(error, result){
  if(error){
    alert('Error');
  }else{
    Session.set("data", result)
  }
});

我想你想要显示一个集合中的文件,说参与者

您可以创建允许某些字段的发布。

e.g

Meteor.publish('allPartipants', function() {
  return Listings.find(
    {type: 'actors'},
    {fields: { name: 1, age: 1} }
  );
});

订阅如下:

 Meteor.subscribe('allPartipants');

在帮助器中,您只需使用find()。fetch()调用该集合,如下所示。

Template.templatName.helpers({
   allParticipants(){
    Participants.find().fetch()
  }
})

和你提到的html

 <ul>
    {{#each allParticipants}}
        {{name}}
    {{/each}}
</ul>