从路由器,如何在EmberJS

时间:2017-07-20 18:23:47

标签: ember.js ember-router

假设我有以下网址。

www.mywebsite.com/foo/abc/def

在我的路由器中,它可能看起来像这样:

this.route('foo',  function() {
    this.route('fooo');
    this.route('foooo');
    this.route('abc', function() {
      this.route('def');
      this.route('def, {path: 'def.html'});
       // Some other routes
    }
    // Some other routes
}
// Some other Routes

那么如果我希望我的foo/abc/def重定向到完全不同的地方会发生什么。比如,bar/uvw/xyz。我怎样才能重定向到那里?有没有办法从路由器做到这一点?我可以在/foo/abc/def路线中编写转换逻辑,但这看起来有点混乱。

我需要这样做的原因是因为我正在将我们公司的一个网站转换到一个新的Ember网站。我们希望改变我们某些产品的路线,但要确保已保存这些网页链接的人不会得到死链接。

2 个答案:

答案 0 :(得分:2)

你不能从路由器那样做。您需要将重定向放置在Route的JavaScript代码中。

正如@locks所说,这可能是您开始阅读Redirecting guides的好地方。

答案 1 :(得分:1)

我知道这并不总是一个选项,但您可能希望看一下让Web服务器执行此操作(nginx,Apache,S3,无论您使用的是什么)。

这样做的主要好处是您的Ember应用程序根本不需要加载来进行重定向决策。此外,它使您的Ember路由器代码更清晰,而不必担心代表旧应用程序的URL结构。