流星,存根方法和流星方法

时间:2014-02-15 11:49:14

标签: javascript meteor

我正在使用流星, 我的html中有一个把手标签

{{displayResult}}

在我的客户端JS文件中,我编写了这样的帮助器和存根方法

辅助功能 * 修改 *

displayResult:function(){
    var abc;
    var apiResultDependency = new Deps.Dependency();  
    Meteor.call('apiresult',function(e,result){
   abc=result;
   apiResultDependency.changed();                                           
    });                                     
                                                console.log(abc);                                                  
                                             console.log(result);

apiResultDependency.depend();
    return abc;//returning nothing
}

存根方法

Meteor.startup(function(){              
    return Meteor.methods({
        apiresult:function(){
            console.log("loading...");
        }
    });
});

我的服务器代码连接一个API并延迟结果,我的代码是

apiresult:function(){
  var response = returnAllResult();//this gets the result from outside func. working good
  return response;
}

我想从服务器端函数获取结果,我想在html文件中显示 如何接收和显示它。我的网页上没有任何内容。在我的控制台中,它正在打印结果。

1 个答案:

答案 0 :(得分:0)

问题是当数据从服务器到达时,您的模板不会重新呈现。解决此问题的最简单方法是使用反应式数据源模式(查看here),因此在客户端代码中,您需要添加以下内容:

var apiResultDependency = new Deps.Dependency();
var abc;

你的助手可能是这样的:

displayResult: function() {
  if (abc === undefined) {
    Meteor.call('apiresult', function(e,result) {
      abc = result; // make sure this is not undefined to prevent infinite loop
      apiResultDependency.changed();
    });
  }
  apiResultDependency.depend();
  return abc;
}