无法使用 Ember 数据从商店检索本地记录
Cant retrieve local records from store using Ember Data
我正在尝试通过在控制器中使用此行来检索已加载到商店中的记录:
var allProducts = this.store.all('product');
但是,这返回了一个奇怪的对象(见屏幕截图)。当我在上面调用 length 时,结果是 "undefined." 我已经使用 Chrome Ember 检查器来确认在上面的代码行 [=24 之前,记录确实已经加载到 Product 中=].我想因为 store.all returns 一个记录数组我可以立即迭代它而不是承诺。请问我哪里错了?
啊承诺! :)
你应该可以做到这一点:
var allProducts = this.store.all('product').then(function(products) {
return products;
});
返回的strange object
是一个record array
。这很重要,以便 Ember 可以为加载的数组设置观察者。我相信这就是造成您困惑的原因。见 more specifics in the docs:
It's important to note that DS.RecordArray is not a JavaScript array.
It is an object that implements Ember.Enumerable. This is important
because, for example, if you want to retrieve records by index, the []
notation will not work--you'll have to use objectAt(index) instead.
您必须查看 DS.RecordArray
的文档,但您应该能够使用 forEach
方法对其进行迭代。见 ember array documentation for more details.
问题是我试图使用传统的 for 循环遍历记录数组。似乎 a) recordarray 不能 return 长度和 2) 必须使用 forEach 循环对其进行迭代,这是我最初所做的但由于 forEach 不支持中断或继续而放弃了。
我正在尝试通过在控制器中使用此行来检索已加载到商店中的记录:
var allProducts = this.store.all('product');
但是,这返回了一个奇怪的对象(见屏幕截图)。当我在上面调用 length 时,结果是 "undefined." 我已经使用 Chrome Ember 检查器来确认在上面的代码行 [=24 之前,记录确实已经加载到 Product 中=].我想因为 store.all returns 一个记录数组我可以立即迭代它而不是承诺。请问我哪里错了?
啊承诺! :)
你应该可以做到这一点:
var allProducts = this.store.all('product').then(function(products) {
return products;
});
返回的strange object
是一个record array
。这很重要,以便 Ember 可以为加载的数组设置观察者。我相信这就是造成您困惑的原因。见 more specifics in the docs:
It's important to note that DS.RecordArray is not a JavaScript array. It is an object that implements Ember.Enumerable. This is important because, for example, if you want to retrieve records by index, the [] notation will not work--you'll have to use objectAt(index) instead.
您必须查看 DS.RecordArray
的文档,但您应该能够使用 forEach
方法对其进行迭代。见 ember array documentation for more details.
问题是我试图使用传统的 for 循环遍历记录数组。似乎 a) recordarray 不能 return 长度和 2) 必须使用 forEach 循环对其进行迭代,这是我最初所做的但由于 forEach 不支持中断或继续而放弃了。