如何停止ui-sref编码url params

时间:2015-09-30 13:10:42

标签: javascript angularjs angularjs-directive angular-ui-router

以下是我与ui-sref属性指令一起使用的链接:

<a ui-ref="show.hastitle({uuid:item.uuid, title:item.title})">

标题参数可以是波斯语单词,我期望的是如下链接:

http://domain.com/page/54c82de2978af/واژه-فارسی

ui-sref返回如下:

http://domain.com/page/54c82de2978af/%D9%88%D8%A7%DA%98%D9%87-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C

我已经使用了以下解决方案:

var noneEncodedUri = {
      encode: function(str) { return str && str.replace(/ /g, "-"); },
      decode: function(str) { return str && str.replace(/-/g, " "); },
      is: angular.isString,
      pattern: /[^/]+/
};

$urlMatcherFactoryProvider.type('noneEncodedUri', noneEncodedUri);

$stateProvider.state('mystate', {
      url: "/{title:noneEncodedUri}"
 })

但渲染的链接并没有改变 如何完全阻止ui-sref编码url params?

2 个答案:

答案 0 :(得分:2)

我已使用此范围功能来解决我的问题:

$scope.beautyUri = function (uuid, title) {
    return decodeURIComponent($state.href("show.hastitle", {uuid: uuid, title: title}));
  };

并在html中使用此函数,如下所示:

<a href="{{beautyUri(item.uuid, item.title)}}">{{title}}</a>

答案 1 :(得分:0)

我讨厌这个问题,但经过大量不成功的搜索后,找到解决方案实际上非常简单 您可以在decodeURIComponent()上使用javaScript $scope.item.title函数,就像魅力一样。

相关问题