router.js
this.route('claim', function() {
this.route('new');
this.route('edit', { path: '/:claim_id' });
});
claim.new
- >使用空模型重定向到claim.edit
。 this.transitionTo('claim.edit', model);
最初,因为未保存模型,我们得到:index.html#/claim/null
保存模型后,它会继续显示为index.html#/claim/null
,而不是index.html#/claim/87
有没有办法强制网址刷新?
答案 0 :(得分:1)
强制URL刷新的唯一方法是强制刷新路由/页面。您可以使用路线中的refresh method来执行此操作。
要理解为什么它不会自动更新,您必须了解路由的工作方式以及Ember如何与Ember Data(或任何数据持久性库)分开。
首先,您必须记住Ember不了解Ember Data及其对象模型的细节。它只看到普通的灰烬物体。 Ember数据模型比给你的其他模型更重要,但Ember并不知道这种区别。
其次,Ember中的路由是绑定/观察者意识到的。它不会注意更改并相应地更新URL状态。它使用serializer hook计算一次网址,然后保留原样。如果您的模型以任何方式发生变化,它将不会重新计算。它只会在刷新时重新计算。
简短的故事,您的应用程序中更改模型ID的部分以及计算要使用的URL的部分并不是彼此了解的。您必须手动同步它们。使用刷新方法可能是最简单的方法。
更新:正如Kitler指出的那样,您也可以使用新模型转换到您的路线。它不会触发model
挂钩,因此它不必进行任何异步工作,但它仍会更新URL。