Ember.js EmberJS-嵌套路由/资源

Ember.js EmberJS-嵌套路由/资源,ember.js,routes,ember-router,Ember.js,Routes,Ember Router,假设我希望我的应用程序所需的URL为: domain.com/A/:aID domain.com/A/:aID/B/:bID domain.com/A/:aID/B/:bID/C?参数1:123 每个状态都将是一个完全不同的视图/模板 我目前拥有的基本代码是: this.resource('A', { path: 'A/:id' }, function () { this.resource('A.B', { path: 'B/:id' }, function () {

假设我希望我的应用程序所需的URL为:

  • domain.com/A/:aID
  • domain.com/A/:aID/B/:bID
  • domain.com/A/:aID/B/:bID/C?参数1:123
每个状态都将是一个完全不同的视图/模板

我目前拥有的基本代码是:

this.resource('A', { path: 'A/:id' }, function () {
    this.resource('A.B', { path: 'B/:id' }, function () {
        this.route('A.B.C');
    }
}

这是实现这一目标的正确方式吗?有更好的方法吗?

您的路线声明应该是
C
,而不是
a.B.C
。资源不保留其父上下文,但路由保留。如果需要,也可以使用嵌套路由而不是嵌套资源

this.route('A', { path: 'A/:id' }, function () {
    this.route('B', { path: 'B/:id' }, function () {
        this.route('C');
    }
}

除此之外,我认为你的方法会很有效。

谢谢!一个后续行动。假设我在B或C上,我希望有一个“后退”按钮将用户带回到上一个状态,我不想使用窗口。历史记录(-1),我该怎么做?我想您希望这样做,以便可以将用户带回到上一页,而不必返回浏览器历史记录?我认为类似于
window.history.replaceState(window.history.previous)
的东西可能会起作用。(在中找到。)我如何使用B视图中a的模型来使用{{link to}}呢?老实说,我不知道你会怎么做。我想您必须存储上次访问的路线和模型,然后自己将其放入
链接中。