2014-10-25 21 views
5

Ben zaman uyumsuz ilişkilerle kurmak bazı modeller, örneğin vardır:Kor-verileri bir zaman uyumsuz ilişkisine özelliği bilgisayarlı

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

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

, ben sadece approver denetler yazı, isApproved, üzerinde bir özelliği vardır ayarlandı. Bunun çalışması gerektiğini düşünüyoruz:

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

Ama bu her zaman doğru döndürür ve ben verilerini incelemek eğer this.get('approver') bir söz verir çünkü olduğunu görüyoruz. Bu çalışır:

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

Ama content kullanarak biraz fazla iç yapıları ile karıştırmasını olmak gibi geliyor bana. Bunu yapmak için doğru yol mu, yoksa bir şey mi özlüyorum?

cevap

0

this.get('approver.content') için sınama yapılamıyor, çünkü öğe ilişkili bir approver içeriyor olabilir, ancak henüz yüklenmemiş olabilir. Bahşiş için

// 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') 
+0

Teşekkür ama vaat yerine halde, değer yerine söz dönen kor durdurmak için görünmüyor:

deneyin rotada ilgili modeli yükleme. Bunu inceleyerek, 'Geliştirildi' olduğunda, sözün yerine getirildiğini görebiliyorum, ancak 'this.get (' onaylayan ') ', {content: null, isFulfilled: true}' olan, ancak kendisinin bir vaat verdiğini null değil. – aquavitae

+0

denetleyici tanımına "onaylayan: null" ifadesini eklemeyi deneyin (veya modeldeki async onaylayıcısından ayırt etmek için farklı bir ad) – Asgaroth