页面加载从用户查看用户的个人资料时开始。他做了一些动作,我的代码做了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)
然后我最终得到类似这些的所有错误:
Error Attempted to handle event `loadedData` : Object not updated after deleteRecord
我认为这篇文章解释了这个问题 -
http://www.thomasboyt.com/2013/05/01/why-ember-data-breaks.html
未捕获错误:在进入时尝试处理事件
调用loadedData
state rootState.loaded.updated.uncommitted。用{}这意味着您正在尝试对记录做些什么 它无法在当前状态下完成。这通常在尝试时发生 更新当前正在保存的记录或尝试呈现的记录 已被删除的对象的属性。
但请注意,当它反过来时,我先去用户列表,然后去查看用户的个人资料,更新用户 - 这个错误永远不会出现。
编辑:
用户的示例回复:
{
users: [
{
_id: 521e1112e8c5e10fb40002a0
..
}
]
}
并且对于单个用户:
{
user: {
_id: 521e1116e8c5e10fb40004ca
}
}
答案 0 :(得分:0)
您应该在`setupController'挂钩中设置控制器,如下所示:
model: function() {
return App.User.find({});
},
setupController: function(controller, model) {
controller.set('content', model);
}
不确定这是否是唯一的问题。您可以发布有关您所遇到的错误的更多信息吗?
答案 1 :(得分: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
注意:旧版本的EmberData可能无法使用update