角UI的SREF EN code参数 [英] Angular ui-sref encode parameter
问题描述
我的路由器看起来像:
.STATE('项目',{
URL:'/项目/ *路径,
控制器:ProjectController',
templateUrl':'/pages/project.html',
});
但是当我使用
UI-SREF =项目({路径:mypath中})
与 mypath中=第1部分/第2部分
我希望它变成 /项目/第1部分/第2部分
而是我得到 /项目/第一部分%252Fpart2
。
如何才能把它传递参数,而不对其进行编码?
由于这是这里所述,您需要声明自定义变量类型URL参数,以便有斜线不带codeD。从GitHub引述评论:
如果你真的不想带codeD斜线你,注册您的正则表达式的自定义类型,并宣布ITEM_ID是你的自定义类型,即网址:/ {ITEM_ID:MyType的}
块引用>函数valToString(VAL){返回VAL!= NULL? val.toString():VAL; }
功能valFromString(VAL){返回VAL!= NULL? val.toString():VAL; }
功能regexpMatches(VAL){/ * jshint validthis:真* /返回this.pattern.test(VAL); }
$ urlMatcherFactory.type(MyType的,{
EN code:valToString,
德code:valFromString,
是:regexpMatches,
模式:/ [^ /] + \\ / [^ /] + /
});My router looks like that:
.state('project', { 'url': '/project/*path', 'controller': 'ProjectController', 'templateUrl': '/pages/project.html', });
but when I use
ui-sref="project({path: mypath})"
with
mypath=part1/part2
I expect the it to turn into/project/part1/part2
but instead i get/project/part1%252Fpart2
.How can I make it pass parameter without encoding it ?
解决方案As it was described here, you need to declare custom variable type for URL param in order to have slashes not encoded. Quoting comment from github:
If you really don't want the slash encoded for you, register a custom type with your regexp and declare item_id to be your custom type, i.e., url: /{item_id:MyType}
function valToString(val) { return val != null ? val.toString() : val; } function valFromString(val) { return val != null ? val.toString() : val; } function regexpMatches(val) { /*jshint validthis:true */ return this.pattern.test(val); } $urlMatcherFactory.type("MyType", { encode: valToString, decode: valFromString, is: regexpMatches, pattern: /[^/]+\/[^/]+/ });
这篇关于角UI的SREF EN code参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!