保存新模型时,网址不会更新

时间:2015-09-02 01:56:31

标签: ember.js

router.js

  this.route('claim', function() {
    this.route('new');
    this.route('edit', { path: '/:claim_id' });
  });

claim.new - >使用空模型重定向到claim.editthis.transitionTo('claim.edit', model);

最初,因为未保存模型,我们得到:index.html#/claim/null

保存模型后,它会继续显示为index.html#/claim/null,而不是index.html#/claim/87

有没有办法强制网址刷新?

1 个答案:

答案 0 :(得分:1)

强制URL刷新的唯一方法是强制刷新路由/页面。您可以使用路线中的refresh method来执行此操作。

要理解为什么它不会自动更新,您必须了解路由的工作方式以及Ember如何与Ember Data(或任何数据持久性库)分开。

首先,您必须记住Ember不了解Ember Data及其对象模型的细节。它只看到普通的灰烬物体。 Ember数据模型比给你的其他模型更重要,但Ember并不知道这种区别。

其次,Ember中的路由是绑定/观察者意识到的。它不会注意更改并相应地更新URL状态。它使用serializer hook计算一次网址,然后保留原样。如果您的模型以任何方式发生变化,它将不会重新计算。它只会在刷新时重新计算。

简短的故事,您的应用程序中更改模型ID的部分以及计算要使用的URL的部分并不是彼此了解的。您必须手动同步它们。使用刷新方法可能是最简单的方法。

更新:正如Kitler指出的那样,您也可以使用新模型转换到您的路线。它不会触发model挂钩,因此它不必进行任何异步工作,但它仍会更新URL。