Определение многосегментного маршрута catch all в ember.js

Я использую Ember.js, и я хотел бы создать полный маршрут, чтобы отправить пользователя обратно в корень приложения, если он перейдет по URL-адресу, который не соответствует ресурсу. (Я использую API истории) Я реализовал это так:

App.Router.map(function() {
    this.resource('things', function() {
        this.resource('thing', {path:':thing_id'}); 
    });
    this.route('catchAll', { path: ':*' });
    this.route('catchAll', { path: ':*/:*' });
    this.route('catchAll', { path: ':*/:*/:*' });
});

App.Router.reopen({
  location: 'history'
});

App.CatchAllRoute = Ember.Route.extend({ 
    redirect: function() {
        this.transitionTo('index'); 
    }
});

App.IndexRoute = Ember.Route.extend({ 

});

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

Я использую Ember.ВЕРСИЯ: 1.0.0-rc.1


person i0n    schedule 25.02.2013    source источник


Ответы (1)


После некоторого возни я думаю, что нашел решение: кажется, что *: делает свое дело, например

this.route('catchAll', { path: '*:' });

Я установил эту скрипту, чтобы продемонстрировать, как она работает.

person Shimon Rachlenko    schedule 26.02.2013
comment
Это правильно, более или менее, но немного сбивает с толку. : — это имя, которое вы даете для захвата всего. Лучше сделайте *wildcardurl или подобное. Например, когда вы делаете что-то с параметрами в настройках модели. - person Martin Hansen; 20.02.2014
comment
Мне кажется, или это заставляет перезагружать страницу полностью? где как нормальный маршрут не будет? - person pfg; 01.02.2016