我正在使用Ember与Ember Data并使用REST API,该API仅在列表端点返回一小组属性,在详细信息端点返回完整有效负载。例如:
网址:/ api / users
{
"users":[
{"id":1,"name":"Bob"},
{"id":2,"name":"Sam"}
]
}
网址:/ api / users / 1
{
"user":{
"id":1,
"name": "Bob",
"description": "Lorem ipsum dolor"
}
}
注意/ api / users / 1如何返回比列表更多的属性。使用Ember Data,如果我的路由设置如下,如何在必要时获取完整的有效负载?
App.UsersRoute = Ember.Route.extend({
model: function () {
return this.store.find('user');
}
});
App.UserRoute = Ember.Route.extend({
model: function (params) {
return this.store.find('user', params.user_id);
}
});
问题在于这一行:
this.store.find('user', params.user_id)
如果列表已经加载,它不会从服务器请求完整的有效负载,因此调用商店的find方法会从缓存中返回具有有限属性的用户。
答案 0 :(得分:1)
您可以执行以下操作:
var user = this.store.getById('user', params.user_id);
if (user) {
return user.reload();
} else {
return this.store.find('user', params.user_id);
}
检查商店方法(getById,hasRecordForId,recordIsLoaded)和model reload。