5

我正在构建一个带有文件管理器的应用程序,例如 Ember.js 的功能。我想要“.../#/files/Nested/Inside/”形式的嵌套文件夹的 URL ,它适用于linkTo; 但是,如果我刷新(或直接转到 URL),我会收到错误消息“没有路由匹配 URL '/files/Nested/Inside'”。有没有办法让 Ember.js 在这种情况下工作?谢谢。

这是我当前的路线设置:

FM.Router.map(function() {
  this.resource('folders', { path: '/files' })
  this.resource('folder', { path: '/files/:path' })
})

FM.FoldersRoute = EM.Route.extend({
  model: function() {
    return FM.Folder.find('/')
  }
})

FM.FolderRoute = EM.Route.extend({
  model: function(params) {
    return ns.Folder.find(params.path)
  },
  serialize: function(folder) {
    return { path: folder.get('path') }
  }
})
4

1 回答 1

6

哇,有趣的问题。这应该是可能的,但我自己没有尝试过,也没有在野外看到任何这样的例子。

在后台,ember 使用 tildeio路由器路由识别器来解析路由。该路线的自述文件解释了如何定义更详细的路线,例如:

router.map(function(match) {
  // this will match anything, followed by a slash,
  // followed by a dynamic segment (one or more non-
  // slash characters)
  match("/*page/:location").to("showPage");
});

因此,要使嵌套文件夹正常工作,您可以执行以下操作:

FM.Router.map(function() {
  this.resource('folders', { path: '/files' })
  this.resource('folder', { path: '/files/*path' })
})

希望这可以帮助。

于 2013-06-11T20:21:11.490 回答