javascript - Ember.js 嵌套文件夹,如路由(包含斜线)

标签 javascript ember.js

我正在使用 Ember.js 构建一个具有文件管理器功能的应用程序。我想要嵌套文件夹的 URL,格式为 ".../#/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') }
  }
})

最佳答案

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

在引擎盖下,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' })
})

希望这对您有所帮助。

关于javascript - Ember.js 嵌套文件夹,如路由(包含斜线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048372/

相关文章:

ember.js - 在 Ember deleteRecord 中添加有效负载

javascript - 激活路由时不执行 ember 模型函数

javascript - Js窗口根据另一个元素宽度调整改变元素宽度

javascript - 避免在弹出窗口中输入 key 表单提交

javascript - JQuery AjaxStart/Stop 实现延迟功能?

javascript - 将 JavaScript 用 let 转换为 var

javascript - 在路由中设置自定义 Controller 属性

javascript - 无法将最新的 ember 与预编译模板一起使用

javascript - 如何让对象中的方法返回具有动态值的对象?

javascript - PHP、jQuery 和 Ajax 历史