Ember .get没有返回正确的值

时间:2016-01-26 09:22:30

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

所以当我使用

时,我有这个ember对象"阵容"
function ContentController($scope, $ionicSideMenuDelegate) {
  $scope.toggleLeft = function() {
    $ionicSideMenuDelegate.toggleLeft();
  };
}

但如果我检查那个对象并使用_data

,那就错了
lineup.get('stations').length = 396

这是正确的,

阵容电台是从像这样的

的余烬数据请求有效载荷操作中获得的
lineup._data.stations.length = 429

任何想法?

1 个答案:

答案 0 :(得分:1)

Ember.get有时会返回ObjectProxyArrayProxy。有时在余烬数据中,您还可以获得PromiseObjectPromiseArray

如果您在计算属性中,则可以直接访问数据,但在.get之后永远不要使用普通的JS-dotnotation!始终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');
  }
})

并采取行动:

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