在应用程序内部,我们允许用户创建与现有记录相关的新记录。为此,我们使用类似这样的动作:
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(或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');
});
我在user / update.hbs模板中所做的只是{{user-form user=model}}
答案 0 :(得分:0)
问题是你刚创建的模型在那时没有id,因为它没有保存,ember无法路由到没有id的模型,如果可能的话,在尝试转换到路径之前保存模型,如果您不想保存模型,因为用户可以取消操作,请检查用户遇到相同问题的此线程(如果我理解您的问题正确),我提供了一个解决方案,我在我的问题中使用自己的项目