我有任何看法: <a ui-sref="app.file({path: file.path})">{{ file.path }}</a>
<a ui-sref="app.file({path: file.path})">{{ file.path }}</a>
file.path 是 html/hero-sidebar.html
file.path
html/hero-sidebar.html
我的状态定义为:
.state('app.file', { url: '/file/*path' views: repositoryView: templateUrl: '/templates/app/_file.html' })
但是当我单击链接时,它转到 http://localhost:9001/app/file/html%252Fhero-sidebar.html
http://localhost:9001/app/file/html%252Fhero-sidebar.html
我想要的是去 http://localhost:9001/app/file/html/hero-sidebar.html
http://localhost:9001/app/file/html/hero-sidebar.html
可以将ui-router与AngularJS一起使用吗?
ui-router Github中 已经记录了问题,您可以在 这里 找到它 ****
为了解决这个问题,您需要在配置文件中添加此代码,以处理url的编码和解码。
您可以使用以下代码注册自己的替换“字符串”类型,从而覆盖内置的字符串类型(执行斜线编码)
码
app.config(['$urlMatcherFactory', '$stateProvider', function($urlMatcherFactory, $stateProvider) { //$stateProvider.state() & other code here function valToString(val) { return val != null ? val.toString() : val; } function regexpMatches(val) { /*jshint validthis:true */ return this.pattern.test(val); } $urlMatcherFactory.type("string", { encode: valToString, decode: valToString, is: regexpMatches, pattern: /[^/]*/ }); }]);
工作朋克