POST を介して API にオブジェクトを送信し、そのオブジェクトを表示するルートに移行しています。API は、POST でオブジェクトの 1 つ以上のフィールドを変更し、更新された情報を要求応答で返します。
表示されるデータは、API への POST 前の元のデータです。コンソールから、ember-data が API から更新された情報を受け取っていることがわかります。正しい情報が表示されるように、どうすれば ember にオブジェクトを強制的に「更新」させることができますか?
POST を介して API にオブジェクトを送信し、そのオブジェクトを表示するルートに移行しています。API は、POST でオブジェクトの 1 つ以上のフィールドを変更し、更新された情報を要求応答で返します。
表示されるデータは、API への POST 前の元のデータです。コンソールから、ember-data が API から更新された情報を受け取っていることがわかります。正しい情報が表示されるように、どうすれば ember にオブジェクトを強制的に「更新」させることができますか?
マット。Yehuda Katz は、この機能を提供するユーザーに返信を投稿しました。
https://stackoverflow.com/a/14183507/506230
基本的に、レコードを作成し、適用し、保存してから再読み込みします。
saveMessage: function(text){
var acct = Social.Account.find(this.get("id")),
msg = Social.store.createRecord(
Social.Message,
{
text: text,
account: acct,
created: new Date()
}
);
acct.get("messages").addObject(msg);
Social.store.commit();
var timeoutID = window.setTimeout(function(){
__msg.reload();__
console.log('reloading');
}, 250);
}
ember は実際には適切に動作しており、追加の作業は必要ないことがわかりました。問題は、モデルの計算されたプロパティと同じ名前でコントローラーに変数を設定していたことです。計算されたプロパティではなく、コントローラの変数の値が表示されていました。コントローラー変数の名前を変更すると、追加のコードなしで問題が解決されました。