无法使用Ember Data从商店检索本地记录

时间:2015-02-24 16:05:16

标签: ember.js ember-data

我正在尝试通过在控制器中使用此行来检索已加载到商店中的记录:

var allProducts = this.store.all('product');

但是,这会返回一个奇怪的对象(见截图)。当我在上面调用长度时,结果是"未定义。"在上面的代码行运行之前,我已使用Chrome Ember检查器确认记录确实已加载到Product中。我认为,因为store.all返回一个记录阵列,我可以立即迭代它,不像诺言。我哪里出错了?

Console

3 个答案:

答案 0 :(得分:1)

返回的strange objectrecord array。这很重要,以便Ember可以为加载的数组设置观察者。我相信这是造成你困惑的原因。见more specifics in the docs

  

重要的是要注意DS.RecordArray不是JavaScript数组。   它是一个实现Ember.Enumerable的对象。这个很重要   因为,例如,如果你想通过索引检索记录,[]   符号不起作用 - 你必须改为使用objectAt(索引)。

您必须查看DS.RecordArray的文档,但您应该能够使用forEach方法对其进行迭代。请参阅ember array documentation for more details

答案 1 :(得分:0)

问题是我试图使用传统的for循环迭代记录阵列。似乎a)recordarray不能返回长度,2)必须使用forEach循环来迭代它,这是我最初做过的但是因为forEach不支持break或continue而丢弃。

答案 2 :(得分:-1)

承诺啊! :)

你应该可以这样做:

var allProducts = this.store.all('product').then(function(products) {
  return products;
});