我认为我有:<a ui-sref="app.file({path: file.path})">{{ file.path }}</a>
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/hero-sidebar.html
这是否可以使用带AngularJS的ui-router?
答案 0 :(得分:2)
ui-router Github中已经记录了问题,您可以找到它here
为了解决这个问题,你需要在你的配置中添加这个代码,它将负责url的编码和解码。
你可以覆盖内置的字符串类型(正在执行 通过注册你自己的替换&#34;字符串&#34;使用以下代码输入
<强>代码强>
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: /[^/]*/
});
}]);