我怎样才能访问ui-router的UrlMatcher?

时间:2016-02-25 16:24:33

标签: javascript angularjs angular-ui-router pattern-matching

ui-router的文档中,有一个名为UrlMatcher的对象我需要访问它才能使用某些方法(例如exec)但我找不到任何明确的指令如何做到这一点。但是,该文档页面中描述了该对象。

我希望能够做到这样的事情:

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

我如何访问该对象?

urlMatcherFactory.js on Github

1 个答案:

答案 0 :(得分:1)

Angular有$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参数1 = TT

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

你得到2 fields id ==&gt; 1 param1 ==&gt; TT