2

這裏是我使用的鏈路與ui-sref屬性指令:如何阻止用戶界面,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編碼網址完全PARAMS?

+0

可能重複[角ui.router ui-sref替換url字符 - 美化](http://stackoverflow.com/questions/27918231/angular-ui-router-ui-sref-replace-url-characters-beautify ) – fracz

回答

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> 
+0

最好使用'ng-href' –

0

我哈德這個問題,但是經過大量的失敗搜索,找到解決方案,其實很簡單 你可以在$scope.item.title上使用javaScript decodeURIComponent()函數對我來說它的工作方式就像魅力。