私はEmber Dataモデルを次のように持っています:
export default DS.Model.extend({
name: DS.attr('string'),
friends: DS.hasMany('friend',{async:true}),
requestedFriendIds: Ember.computed('friends',function(){
return this.get('friends').then(function(friends){
return friends.filterBy('status','Requested').mapBy('id');
});
})
});
それを使用するルート設定があります:
export default Ember.Route.extend({
model: function(params){
return Ember.RSVP.hash({
memberProfile:this.store.find('member-profile', params.memberprofile_id).then(function(memberProfile)
{
return Ember.RSVP.hash({
requestedFriendIds:memberProfile.get('requestedFriendIds'),
UserId:memberProfile.get('user.id'),
Id:memberProfile.get('id')
});
}),
});
}
});
}、
そしてルートモデルを利用したhtmlバー。私の計算されたプロパティは、リロード時に常に正しく呼び出されますが、次のように友人と profile.friends レコードを追加してストアを変更するユーザー アクション 'Add Friend' では更新されません。
actions:
{
addFriend:function(profile_id,)
{
this.store.findRecord('member-profile',memberProfile).then(function(member){
var friend = this.store.createRecord('friend',
{
member:member,
status:'Requested',
timestamp: new Date(),
});
friend.save();
member.get('friends').pushObject(friend);
member.save();
}.bind(this));
}
}
いくつかのメモ:「friends」、「friends.[]」で計算されたプロパティを試しました。私のコード ベースは Ember 2.0.1 で、Ember.Data 1.13.12 を使用しているため、「friends.@each」は非推奨です。基になるデータは、バッキング ストア (EmberFire) で正しく更新されます。EmberData をデバッグしたところ、プロパティ変更通知の無効化コードが呼び出されていることがわかりました。これはコードの選択にすぎません...
何が足りないの...? これにアプローチするより良い方法はありますか?