繁体   English   中英

异步关系上的Ember-data计算属性

[英]Ember-data computed property on an async relationship

我有一些模型设置了异步关系,例如:

User = DS.Model({
    postsApproved: DS.hasMany('post', {async: true, inverse: 'approved'})
})

Post = DS.Model({
    approver: DS.belongsTo('user', {async: true, inverse: 'postsApproved'})
})

在控制器中,我在帖子上有一个属性isApprovedisApproved检查是否设置了approver 我希望这应该有效:

isApproved: function() {
    return !Ember.isNone(this.get('approver'));
}

但是这总是返回true,如果我检查数据,我发现这是因为this.get('approver')返回一个promise。 这有效:

isApproved: function() {
    return !Ember.isNone(this.get('approver.content'));
}

但是在我看来,使用content有点太过分了。 这是正确的做法,还是我错过了什么?

你是对的,测试this.get('approver.content')是不正确的,因为该元素实际上可能有一个关联的approver ,但它可能尚未加载。

尝试在路线上加载相关模型:

// route.js
model: function(params) {
   return this.store.find('post', params.post_id).then(function(post) {
     return Ember.RSVP.hash({
       post: post,
       approver: post.get('approver')
     });
   });
},

setupController: function(controller, model) {
  controller.set('model', model.post);
  controller.set('approver', model.approver);
},

// controller.js
isApproved: function() {
    return !Ember.isNone(this.get('approver'));
}.property('approver')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM