在模板渲染之前调用助手

Calling helpers before template rendered

我正在构建一个流星项目,我需要让我的所有 collections 保持非反应性。所以我删除了订阅和发布。为了显示来自 DB 的任何信息,我的助手正在调用 meteor.call 中的方法。但就我而言,模板无法显示来自数据库的信息,因为模板是在从数据库返回任何内容之前呈现的。谁能建议一种在不使用 SESSION.

的情况下在模板中显示来自 Meteor.call 方法的信息的好方法

这是我的代码。 我的模板代码

    <template name = "showEmployeeFromRouter">
    {{#each allEmployee}}
        <div>
            Name: {{name}}
            <br>
            Org: {{org}}
        </div>
        <br><br>
    {{/each}}
  </template>

帮助代码

    Template.showEmployeeFromRouter.helpers({
    allEmployee:function(){
        //return [{name:"AX",org:"XS"},{name:"XS",org:"SE"}];
       Meteor.call('showAllEmployees',function(err,res){
           if(res){
               console.log(res);
               return res;
           }
       });
    }
})

服务器中的代码

Meteor.method({
        showAllEmployees:function(){
        var obj = Employees.find().fetch();
        return obj;
       }
    });

有没有人有解决这个问题的正确方法。

终于做到了。通过使用反应式 var 或反应式 Dict。 我的模板。

    <template name = "`showEmployeeFromRouter`">
    {{#each allEmployee}}
    <div>
        Name: {{name}}
        <br>
        Org: {{org}}
    </div>
    <br><br>
{{/each}}

我的服务器调用。

Meteor.method({
    showAllEmployees:function(){
    var obj = Employees.find().fetch();
    return obj;
   }
});

最后是我的帮手。

Template.showEmployeeFromRouter.created = function(){
this.state = new ReactiveDict();
var parentInstance = Template.instance();
Meteor.call('showAllEmployees',function(err,res){
       if(res)
    parentInstance.state.set('allEmp',res);
})}

Template.showEmployeeFromRouter.helpers({
allEmployee:function(){
    return Template.instance().state.get('allEmp');
}});

别忘了添加反应字典包。 流星添加反应字典