在ember.js中定义多段捕获所有路由

时间:2013-02-25 13:53:01

标签: ember.js ember-router

我正在使用Ember.js并且我想创建一个catch all route,以便在用户导航到与资源不匹配的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.VERSION:1.0.0-rc.1

1 个答案:

答案 0 :(得分:22)

经过一番摆弄后,我想我找到了一个解决方案:*:似乎可以解决问题,比如

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

我设置this fiddle来演示它是如何工作的。