所以当我使用时,我有这个 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
.
如果您不在计算属性中(例如,您在操作中),请使用 .then
在PromiseObject
上或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/