2

ページの読み込みは、ユーザーがユーザーのプロフィールを表示しているときに開始されます。そして、彼はいくつかのアクションを実行し、私のコードは ajax 呼び出しを実行してユーザー タイプを更新します-

App.UserController = Ember.ObjectController.extend
  convert: ->
    $.get '/api/user/convert_to_client/' + id, (response) ->
      self.set('user_type', response.user.user_type)     

しかし、ユーザー リスト テーブルに移動すると、Ember は UsersRoute からすべてのユーザーを取得しようとします。

module.exports = App.UsersRoute = Em.Route.extend
    model: ->
      App.User.find({}).then (response) ->     
        self.controllerFor('users').set('content', response)       

次に、次のようなすべてのエラーが発生します。

エラー イベント `loadedData` を処理しようとしました: deleteRecord 後にオブジェクトが更新されませんでした

ember-data モデルを更新\

ここの記事で問題が説明されていると思います-

http://www.thomasboyt.com/2013/05/01/why-ember-data-breaks.html

キャッチされないエラー: loadedDatarootState.loaded.updated.uncommitted の状態でイベントを処理しようとしました。{} で呼び出される

これが意味することは、現在の状態ではできないことをレコードにしようとしているということです。これは、現在保存中のレコードを更新しようとしたとき、または削除されたオブジェクトのプロパティをレンダリングしようとしたときによく発生します。

ただし、逆の場合は、最初にユーザー リスト テーブルに移動し、次にユーザーのプロファイルを表示してユーザーを更新します。このエラーは発生しません。

編集:

ユーザーからの応答例:

{
  users: [
    {
       _id: 521e1112e8c5e10fb40002a0
        ..
    }
   ]
}

単一ユーザーの場合:

{
  user: {
    _id: 521e1116e8c5e10fb40004ca
  }
}
4

2 に答える 2

0

次のように `setupController' フックでコントローラを設定する必要があります。

model: function() {
   return App.User.find({});
},
setupController: function(controller, model) {
   controller.set('content', model);
}

それが唯一の問題かどうかはわかりません。発生しているエラーに関する詳細情報を投稿していただけますか?

于 2013-09-22T22:40:10.460 に答える
0

レコードの状態を変更せずに (レコードで使用するstore.update代わりに) ストア内のレコードを更新するために使用する必要があります。set

$.get '/api/user/convert_to_client/' + id, (response) =>
  @store.update 'user', id: id, user_type: response.user.user_type

または、応答を正しく構成する場合は、次のようにします。

@store.update 'user', response.user

注:update古いバージョンの EmberData では利用できない場合があります

于 2013-10-02T22:58:48.070 に答える