1

モデルの単一の属性を汚さずに更新する方法を見つけようとしています。と同じですStore.loadが、属性は 1 つだけです。

ユースケースは、アバター画像をアップロードしたいということです(現在のアダプターのセマンティクスAFAIKでは実行できません)。私は特定の API エンドポイントに対してそれを行い、その後、結果の URL でユーザーを更新したいと考えています (したがって、すべてのアバターの外観が更新されます)。

私はプロファイル エディションのコンテキストにいるので、ユーザー全体をロードすると、フォームのすべての変更が失われます (値が上書きされるため)。

そうする方法はありますか?ありがとう!

4

2 に答える 2

1

属性ではなくモデル自体として、「アバター」を個別にモデル化できます。その後、ユーザー モデルの残りの部分と変更が競合することを心配することなく、そのモデルをストア経由で更新できます。

于 2013-02-28T20:51:42.867 に答える
0

考えられる方法は 2 つありますが、試したことはありません。(どちらも単なる回避策です)

DS.attr ではないユーザーのプロパティを設定できます。通常のプロパティであれば、レコードを汚すことはありません。

url がデータベース属性の場合、URL をリッスンする計算プロパティを作成し、それをテンプレートで使用します。

App.User = Em.extend({
  url: DS.attr('string'),
  URL: function() {
    return this.get('url');
  }.property('url')
});

その後user.set('URL', imageUrl)

別の方法は、レコードをclean状態に遷移させることです。

user.get('stateManager').send('becameClean');

2番目の方法は醜いハックです。

于 2013-02-28T18:34:35.717 に答える