【问题标题】:How do I return async value to a template in Meteor如何将异步值返回到 Meteor 中的模板
【发布时间】:2016-01-10 12:05:59
【问题描述】:

我的 Meteor 应用程序中有一个辅助函数,如下所示

Template.items.helpers({
  data: function () {
    return Template.instance().myAsyncValue.get();
  }
});

Template.items.created = function (){
  console.log('template created')
  var self = this;
  self.myAsyncValue = new ReactiveVar("Waiting for response from server...");

  Meteor.call('get_itemes', function (err, asyncValue) {
    if (err)
      console.log(err);
    else
      self.myAsyncValue.set(asyncValue);
      console.log('asyncValue'+asyncValue);
  });

}

Template.items.rendered = function() {
  console.log('template rendered')
};

我基本上是在尝试将这些数据发送到模板进行显示。在我的 get_items 函数中,我正在对 Parse 进行异步调用,以检索一些对象。我查看了this 的帖子,但我仍然不清楚在流星中将异步数据返回到模板的首选方法是什么。

这是我的 get_items 函数

  get_items: function() {
    var Item = Parse.Object.extend("Item");
    var query = new Parse.Query(Item);
    query.find({
      success: function(results) {
        console.log("Successfully retrieved " + results.length + " scores.");
        console.log(results);
        return results

      },
      error: function(error) {
        console.log("Error: " + error.code + " " + error.message);
        return error;
      }
    });
  }

即使我在调用 parse 的异步函数中记录成功,它似乎并没有返回到反应变量,我实现这个错误吗?

【问题讨论】:

  • @David Weldon 我问的问题不同,有一个问题是因为返回函数被异步调用,但 var 没有反应
  • 好吧,抱歉,我把副本翻过来了。

标签: javascript meteor parse-platform callback


【解决方案1】:

您可以将其保存到本地空集合并使用{{#each}}{{/each}}。例如:

Items = new Mongo.Collection(null);

Template.items.onCreated(function () {
  Meteor.call('myMethod', function (err, results) {
    if (!err) {
      results.forEach(function (item) {
        Items.insert(item);
      })
    }
  });
});

Template.items.helpers({
  items: function () {
    return Items.find();
  }
});

然后使用 each。

{{#each items}}
  {{ value }}
{{/each}}

【讨论】:

  • 我认为该解决方案可行,但我真的只是在寻找一种将流星与解析 sdk 集成而不复制所有数据的方法,似乎 Meteor 不是正确的解决方案
  • 你不会真的“复制”它,因为空集合没有保存在服务器上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2013-02-18
  • 1970-01-01
  • 2016-05-13
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多