0

В документации ui-router есть объект с именем UrlMatcher, который должен получить к нему доступ, чтобы использовать некоторые методы (например, exec), но я не могу найти четких инструкций о том, как это сделать. Однако этот объект описан на странице документации.Как я могу получить доступ к urlMatcher ui-router?

Я хочу быть в состоянии сделать что-то вроде:

new UrlMatcher('/user/{id}?q&r').exec('/user/bob', { 
    x: '1', q: 'hello' 
}); 

Как я могу получить доступ к этому объекту?

urlMatcherFactory.js on Github

ответ

1

Угловая имеет $urlMatcherFactory and UrlMatchers.

Plunker:http://plnkr.co/edit/MdazdvpVKjZhNjI6ErAH?p=preview

angular.module('myApp',[]).run(['$urlMatcherFactory', 
    function($urlMatcherFactory) { 

     var sourceList= ['John', 'Paul', 'George', 'Ringo'] 
     var names = sourceList.join('|'); 
     var urlMatcher = $urlMatcherFactory.compile("/{source:(?:" + names + ")}/:id"); 

     $stateProviderRef 
     .state('names', { 
      url: urlMatcher, 
      templateUrl: 'tpl.root.html', 
      controller: 'MyCtrl' 
     }); 
    } 
    ]); 

См:Discussion on ui-router's UrlMatcher.

Использование Exec:

URL:/дом/1 param1 = тт

var urlMatcher = $urlMatcherFactory.compile("/home/:id?param1"); 
    var matched = urlMatcher.exec($location.path(), $location.search()); 

вы получаете 2 fields: идентификатор ==> 1 и param1 ==> tt

+0

Я видел это сообщение, но он не имеет прямого доступа к объекту 'UrlMatcher' – CodeArtist

+0

apparantly, var urlMatcher = $ urlMatcherFactory.compile ("'/ user/{id}? Q &r'"); var matched = urlMatcher.exec ('/user/bob ', { x:' 1 ', q:' hello ' }); Это то, что вы имели в виду? –

+1

Да, я собираюсь попробовать. – CodeArtist

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