Можно ли иметь (неопределенное количество) дополнительных сегментов в маршрутизаторе Ember? - PullRequest
0 голосов
/ 30 ноября 2018

Я хотел бы собрать дополнительные сегменты из маршрутизатора Ember в массив.Вот выдуманный path, чтобы проиллюстрировать, что я имею в виду:

this.route('group', {path: 'group/:group_id(/:segments[])*'}, function() {

Можно ли использовать запрос следующим образом:

GET /group/123/some/path/segments

И собрать их в массив?

group.id = 123
segments = ['some', 'path', 'segments']

Или есть какой-либо способ определить дополнительные сегменты, чтобы я мог просто добавить их и собрать их вручную?

1 Ответ

0 голосов
/ 30 ноября 2018

Под капотом маршрутизатор использует распознаватель маршрутов для определения маршрутов.Существует понятие star-segments

router.add([{ path: "/pages/*path", handler: page }]);

result = router.recognize("/pages/hello/world");
result === [{ handler: page, params: { path: "hello/world" } }];

Это похоже на то, что вы ищете

В качестве примечания, это мой обычный подход 404:

Router.map(function() {
  ...very last route
  this.route('not-found', { path: "/*path"});
});

routs / not-found.js:

export default Route.extend({
    model(params){
        return params.path
    }
});

not-found.hbs

404: /{{model}} not found!

такой, что /foo/bar дает: 404: /foo/bar not found!

...