Ember.js嵌套文件夹,如路径(包含斜杠)

tun*_*ngd 5 javascript ember.js

我正在使用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') }
  }
})
Run Code Online (Sandbox Code Playgroud)

Mik*_*tti 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");
});
Run Code Online (Sandbox Code Playgroud)

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

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

希望这可以帮助.