如何将Meteor.apply与选项一起使用?

时间:2014-11-14 08:50:59

标签: javascript meteor

我使用Meteor.call方法在服务器上调用函数。它有点工作,但似乎结果没有完全恢复。 (预计长度为250,现在它返回11,121,类似的东西) 我正在使用异步Meteor.call。我猜测在服务器端功能完成之前,Meteor.call正在返回结果。我尝试过同步通话,但我并不清楚Meteor文档。

所以我尝试使用Meteor.apply()选项。如何使用Meteor.apply选项?有什么例子吗?

client.js

var chartData;
Template.prodSelect.events({
  'click': function(e){
    e.preventDefault();
    var prodName = document.getElementById("productSelect").value;
    //console.log(prodName);
    Meteor.call('chartData', prodName,function(err,data){
      if (err)
        console.log(err);
      chartData = JSON.parse(data);
      //console.log(data);
      createChart(chartData);
    });
  }
});

试过这个,但是错误。

var chartData;
Template.prodSelect.events({
  'click': function(e){
    e.preventDefault();
    var prodName = document.getElementById("productSelect").value;
    //console.log(prodName);
    Meteor.apply('chartData', prodName,{wait: true}, function(err,data){
      if (err)
        console.log(err);
      chartData = JSON.parse(data);
      //console.log(data);
      createChart(chartData);
    });
  }
});

2 个答案:

答案 0 :(得分:4)

我自己想出来了。您需要将参数作为数组传递,并指定“等待”,您只需将true传递给函数。所以,在你的情况下:

Meteor.apply('chartData', [prodName], true, function(err, result){

答案 1 :(得分:0)

为了不接收Malformed method invocation错误,您应该将参数作为数组传递。 除了@ robut的回答:
它仍然是最好看到你通过的选项,因此我更喜欢:

Meteor.apply('addPost',[] ,{wait:true})