在ui-router
的文档中,有一个名为UrlMatcher的对象我需要访问它才能使用某些方法(例如exec
)但我找不到任何明确的指令如何做到这一点。但是,该文档页面中描述了该对象。
我希望能够做到这样的事情:
new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {
x: '1', q: 'hello'
});
我如何访问该对象?
答案 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 强>