javascript - Ember .get 未返回正确的值

标签 javascript ember.js ember-data ember-cli

所以当我使用时,我有这个 ember 对象“阵容”

lineup.get('stations').length = 396

但如果我检查该对象并使用_data,这是错误的

lineup._data.stations.length = 429

这是正确的,

阵容电台是从 ember-data 请求有效负载操作中获取的,如下所示

if (payload.stations) {
     payload.stations = payload.stations.map(function(s) {
         s.logo = s.logoFilename ? 'http://cdn.tvpassport.com/image/station/100x100/'+s.logoFilename : null;
         delete s.logoFilename;
         return Ember.Object.create(s);
      });
}

有什么想法吗?

最佳答案

Ember.get有时会返回 ObjectProxy或和ArrayProxy 。有时,在 ember-data 中,您还可以获得 PromiseObject或和 PromiseArray .

如果您位于计算属性中,您可以直接访问数据,但切勿在 .get 之后使用普通的 JS 点表示法!永远这样做obj.get('full.path.to.prop')从来没有obj.get('full').get('path').get('to').get('prop')obj.get('full').path.to.prop .

如果您不在计算属性中(例如,您在操作中),请使用 .thenPromiseObject上或PromiseArray .

<小时/>

因此对于计算属性:

len: Ember.computed('lineup', {
  get() {
    return this.get('lineup.stations.length');
  }
})
<小时/>

对于一个 Action :

alertLen() {
  this.get('lineup.stations').then(stations => alert(stations.get('length'));
}

关于javascript - Ember .get 未返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010477/

相关文章:

javascript - Angular2 添加 HTML 到动态元素

javascript - 如何删除emberjs中的键?

ember.js - 嵌入关系中的多态关系

javascript - 增量元素 ID

javascript - 选择时如何更改菜单颜色?

javascript - 将 zip 文件解压缩到本地文件夹

ember.js - 在 ember-cli 应用程序中将复杂的功能放在哪里?

javascript - Ember.js fixture 适配器 ID 错误,使用 for 循环生成的 fixture 数据

javascript - Ember JS : Resolve promise in the success of processing request

ember.js - 尝试标准化和推送时,在调用 "Assertion Failed: Expected an object as ` `push` 时出现错误/`update` data`