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

未捕获的错误:尝试loadedData在 rootState.loaded.updated.uncommitted 状态下处理事件。用 {} 调用

这意味着您正在尝试对记录执行在当前状态下无法执行的操作。当尝试更新当前正在保存的记录或尝试在已删除的对象上呈现属性时,通常会发生这种情况。

但请注意,当它反过来时,我先去用户列表表,然后去查看用户的个人资料,更新用户 - 这个错误永远不会出现。

编辑:

来自用户的示例响应:

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

对于单个用户:

{
  user: {
    _id: 521e1116e8c5e10fb40004ca
  }
}
4

2 回答 2

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 回答
0

You should set up your controller in the `setupController' hook like this:

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

Not sure if that's the only problem though. Could you post more information on the error you are getting?

于 2013-09-22T22:40:10.460 回答