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

时间:2013-06-11 15:45:43

标签: javascript ember.js

我正在使用Ember.js构建一个具有文件管理器功能的应用程序。我希望嵌套文件夹的网址采用“... /#/ files / Nested / Inside /”的形式,并且可以与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') }
  }
})

1 个答案:

答案 0 :(得分:6)

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

在幕后,ember使用tildeio routerroute-recognizer来解析路线。该路线的自述文件解释了如何define more elaborate routes喜欢:

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' })
})

希望这有帮助。