Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 从Ember中的recordArray访问数据_Ember.js_Ember Data_Ember Cli - Fatal编程技术网

Ember.js 从Ember中的recordArray访问数据

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

假设我有一个X型

  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类。