在应用程序中,我们允许用户创建与现有记录相关的新记录。为了实现这一目标,我们使用的行为是这样的:将未保存的记录传递给Ember.js路由
createUser() {
var route = this;
var model = this.store.createRecord('user', {
client: route.modelFor('client'),
});
route.transitionTo('user.update', model);
},
的user.update
路线呈现一个user-form
组件,使用在过渡传递模型。同样的路线也被用来更新现有的用户。
这种方法的问题如下;当刷新页面时,由于路径在查询商店时无法找到相应记录(此时URL为/users/null/update
),页面错误。理想情况下,我会在URL中传递客户端(或client.id)参数,以便:
- 页面可以重新加载而不会出现问题。
- 与用户关联的客户端设置正确。
我该如何在Ember.js中实现?我知道这可以很容易地使用嵌套路由(通过在客户端路由中嵌套user.update路由)来完成,但这在视觉上没有意义。
路由器的相关部分如下:
this.route('clients');
this.route('client', {path: 'clients/:id'}, function() {
this.route('users');
});
this.route('user', {path: 'users/:id'}, function() {
this.route('update');
});
所有我在用户做/ update.hbs模板{{user-form user=model}}
您可以发布您的路由器,并包含用户表单组件的模板文件? –