Ember.js 从Ember中的recordArray访问数据
假设我有一个X型Ember.js 从Ember中的recordArray访问数据,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,假设我有一个X型 idOfX: DS.attr() shouldBeIncluded: DS.attr(), type: DS.attr(), valueOfX: DS.attr( 我正在尝试使用ember store的/methods获取x类型的所有元素 在store方法解析为data之后,我希望能够在type属性上过滤数据,或者使用valueOfX属性执行一些操作 访问这些值的最佳方式是什么 注意:之前我正在访问recordArray中internalModel对象的rec
idOfX: DS.attr()
shouldBeIncluded: DS.attr(),
type: DS.attr(),
valueOfX: DS.attr(
我正在尝试使用ember store的/methods获取x类型的所有元素
在store方法解析为data之后,我希望能够在type
属性上过滤数据,或者使用valueOfX
属性执行一些操作
访问这些值的最佳方式是什么
注意:之前我正在访问recordArray中internalModel
对象的record
属性。但对于ember数据,2.11.x记录属性为null,直到我使用getRecord方法显式获取每条记录。我不知道这是为什么/如何发生的
有人能建议大家分享一下想法吗
我用的是余烬-cli@2.10.0, ember@2.10.0您不应该使用内部模型 要访问模型实例,您需要执行以下操作:
this.get('store').findAll('x-model').then((dataList) => {
//deal with dataList like an array
dataList.forEach((item) => {
//the item is the exact model instance and
//you can access to attributes like belo
let type = item.get('type'); //for example
});
});
对于
peekAll
是相同的避免属性名类型
我想它是为余烬数据保留的。在以后的一个版本中,可能会出现错误。为了反复引用这个答案,我制作这个模型只是为了举例,让我们假设type
更改为isOfType
ok。那么易卜拉欣的答案适用于你的问题。您可以使用在Ember.ArrayProxy中定义的任何可枚举方法在这种情况下,dataList
将属于Ember.ArrayProxy的类型子类。我需要得到每个记录的实际内容来进行操作。因此,dataList
具有get
方法,使用contents
参数调用它将获取contents数组。这是每个记录的internalModel数组。问题又回到了它的起点。@yuvrajzohan您可以迭代dataList
并访问每个元素。无需直接访问内容
。我更新了我的答案,以澄清这似乎是工作良好,我需要的。ember data中的文档没有明确指定数据访问。谢谢。这个答案是正确的,但是你也可以只做这个dataList.toArray()
,而不是dataList.forEach(…)
,这取决于用例。@alex我最终使用了forEach。但是与dataList.forEach()相比,dataList.toArray()有什么好处吗。因为我必须迭代dataList,不管它是array类还是arrayProxy类。