2

私はこれらの基本的なモデルを持っています(問題を示すために非常に単純化されています):

App.Alert = DS.Model.extend({
    recipients: DS.hasMany('App.Person')
})

App.Person = DS.Model.extend({
    name: DS.attr("string")
})

次に、次のことを試して実行します。

var alert = App.Alert.createRecord()
var persons = App.Person.find({page: 1, pageSize: 10})
alert.get("recipients").pushObjects(persons.toArray())
var persons2 = App.Person.find({page: 1, pageSize: 10})

その時点で私は得る:

Uncaught Error: Attempted to handle event `loadedData` on <App.Person:ember592:121878738770883> while in state rootState.loaded.updated.uncommitted. Called with undefined 

そのため、オブジェクトをリレーションシップに追加すると、コミットされていない状態に変わるようです。質問は、モデルに hasMany があり、ユーザーがアラートに人を追加できる検索ダイアログを表示したい場合、どのように進めればよいですか? 通常、検索の結果、すでにアラートに追加されているためダーティなオブジェクトが読み込まれます。

現在の回避策は、コントローラーに受信者として追加されるものを保持し、保存する前に追加することです。ただし、それを行ってもサーバーが送信を承認しない場合は、受信者のみをロールバックして、ユーザーが編集を続行できるようにする必要があります。

ユーザーが同じタイプのレコードを検索できるようにする hasMany 関係を管理するためのアプローチは何ですか。

4

1 に答える 1

0

への呼び出しによって応答はどのようにフォーマットされていますApp.Person.findか?

応答が正しく返されていないように見えます (キーがないか、JSON 形式が正しくない)。

つまりCalled with undefined、null またはシリアル化できない戻りオブジェクトを示唆しています。

于 2013-06-29T05:37:19.870 に答える