我正在从服务器请求用户。只有一个用户,这就是HTTP上的内容。但是,当我循环从.findAll()
调用返回的行时,我看到多个值。
U.UsersIndexRoute = Ember.Route.extend({
model: function() {
return {
users: this.store.findAll('user')
};
},
setupController: function(controller, model) {
controller.set('model', model.users);
}
});
U.UsersIndexController = U.ApplicationArrayController.extend({
_modelChanged: function() {
this.get('model').then(_.bind(function(users) {
_.each(users.get('content'), function(user) {
// I should only see one name logged
console.log(user.get('name'), user.get('id'));
});
}, this));
}.observes('model', 'orgNameForId')
})
/users
{
"Results": [{
"id": 16,
"Name": "Chris"
}]
}
运行时,控制台会显示2个用户,一个是Chris 16
,另一个是Chris null
。
答案 0 :(得分:0)
当您在应用程序中创建用户时,它期望从具有id的服务器成功回调,如果配置正确,将自动为您更新。如果没有,则保留为null。当你执行GET请求时,它会添加服务器将其发送给ember-data的内容,这将是另一个因为id不匹配而无法识别为同一模型的模型。
如果您还没有使用它,我会查看Ember Inspector Chrome插件,它允许您查看路线,数据等。
正如评论中所提到的,ember-data需要以下格式,但是你提到在你的适配器中处理它:
{ 'users' : [{
'id': 16,
'Name": "Chris" }]
}
关于您的上一个问题,您不应过滤掉ID为null
的模型。您应该创建应用,以便没有null
。