2013-03-20 2 views
2

У меня есть URL, такие как это: http://foo.bar/#/some/other/pathПоймайте всех параметров маршрута

Как захватить «некоторые/другие/путь» в качестве параметра маршрута?

Я попытался это:

var App = angular.module("App", []) 
    .config(function($routeProvider){ 
    $routeProvider 
     .when('/:path', { controller: ListCtrl, templateUrl: 'list.html'}) 
     .otherwise({ redirectTo: '/'}) 
    }); 

Но :path только дает мне some, а не some/other/path

+1

Вы найдете функцию catch-all как часть предстоящей стабильной версии 1.2, или если вы не возражаете перейти на _unstable_ 1.1.3, вы можете получить ее прямо сейчас. Вот [commit] (https://github.com/angular/angular.js/commit/7eafbb98c64c0dc079d7d3ec589f1270b7f6fea5) (с документацией). – Stewie

+0

Спасибо! Обновление до 1.1.3 сработало! Есть ли способ сделать частичные совпадения в URL-адресе? Например, я хочу сопоставить '.jpg' в' http: //foo.bar/#/some/other/path/image.jpg' – Chanpory

+0

Не уверен в этом, но вот [список ссылок о текущей дискуссии о новая угловая маршрутизация] (https://github.com/angular/angular.js/wiki/Routing-Design-Discussion). Может быть, вы найдете там ответ. – Stewie

ответ

2

Как отметил Стьюи в комментарии выше, Угловое нестабильным 1.1.3 теперь поддерживает всеохватывающий с помощью звездочкой.

Например:

var App = angular.module("App", []) 
    .config(function($routeProvider){ 
    $routeProvider 
     .when('/*path', { controller: ListCtrl, templateUrl: 'list.html'}) 
     .otherwise({ redirectTo: '/'}) 
    }); 

Частичные струнные матчи - такие, как соответствие для экземпляров jpg в URL - до сих пор, похоже, не поддерживаются.

Смежные вопросы