我在模板中有用户列表,在不同模板上显示用户。它没有问题。显示用户信息时没有进行api调用,因为在进行用户调用时已经加载了数据。但是现在在用户节目中我有用户信息和用户的设备列表,我通过api调用users/:user_id/devices
来完成。只有在刷新用户显示页面时才会得到正确的结果。当我从用户列表转到用户时,显示数据未在视图中加载。我可以在ember检查器中看到用户列表数据。我正在使用RSVP来加载这两个资源:
export default Ember.Route.extend({
model(params) {
return Ember.RSVP.hash({
user: this.store.findRecord('user', params.user_id),
devices: this.store.query('device', { user: params.user_id })
});
}
});
我的路由器就像:
Router.map(function() {
this.route('users', { path: 'front/users' });
this.route('user', { path: 'front/users/:user_id'});
});
在我的用户模板中,我使用{{model.user.first_name}}
您是否认为可以保留已从索引加载的数据并在进入用户show进行设备时进行新的api调用?
答案 0 :(得分:1)
问题是从索引显示用户的链接是:
{{#link-to "user" user}}Show user{{/link-to}}
链接正在传递模型。这意味着不会调用路径的模型钩子。
这个想法是,如果你传递模型,你可以只访问模板中的user.devices
,但前提是关系是异步的。
我用
得到了正确的结果{{#link-to "user" user.id}}Show user{{/link-to}}