角UI的SREF EN code参数 [英] Angular ui-sref encode parameter

查看:163
本文介绍了角UI的SREF EN code参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的路由器看起来像:

  .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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆