5

我需要将路径匹配到 URL。在给定模式之后,路径必须是 URL 的结尾,但我做不到。Ember.js 总是结束它与下一个斜杠匹配。

var router = Ember.Router.extend({
    location: 'history',
    enableLogging: true,
    root: Ember.Route.extend({
        index: Ember.Route.extend({
            route: '/'

            repo: Ember.Route.extend({
                route: '/:repo_id',

                index: Ember.Route.extend({
                    route: '/'
                }),

                files: Ember.Route.extend({
                    route: '/files',

                    index: Ember.Route.extend({
                        route: '/'
                    }),

                    sub: Ember.Route.extend({
                        route: '/:path'
                    })
                })
            })
        })
    })
});

使用此路由器:

  • /myrepo/files/将匹配root.repo.files.index
  • /myrepo/files/READMEroot.repo.files.sub将匹配path=README
  • /myrepo/files/folder/README将匹配root.repo.files.sub并将我重新路由到/myrepo/files/folder/因为path=folder而不是path=folder/README

:path即使有斜线,我如何才能让子路由匹配 URL 的结尾?

4

2 回答 2

3

此功能已提交到 Ember.js 存储库的分支。它不在1.0.0-pre2构建中,因此在发布新版本之前,您需要自己构建 Ember.js或找到预构建的版本。

基本用法

不要使用冒号作为动态段的前缀,而是:使用星号*。您的路线将使用类似于以下的语法:

Ember.Route.extend({
  route: '/:repo_id/files/*path'
});

路径段将像普通动态属性一样可用。但是,它将files/在 URL 之后包含任何内容,包括斜杠。

于 2012-12-19T14:56:46.960 回答
1

Ember.js Github Tracker 上有一个未解决的问题: https ://github.com/emberjs/ember.js/issues/1451

于 2012-10-16T14:26:14.490 回答