我有一个变量
x =“http://example.com?a= {{a}}& b = {{b}}
然后在
中使用此变量NG-SRC = {{X}}
因此,对我来说,对变量a和b进行url编码非常重要。
我现在所做的是:
var func = $interpolate($scope.x);
var url = func($scope);
return $sce.trustAsResourceUrl(url);
我的问题是当a或b包含空格时,它们不是url编码的。
如何告诉$ interpolate函数对变量a和b进行url编码?
答案 0 :(得分:4)
$interpolate
服务会评估{{}}
内容并获取 评估范围时,范围内的那些值。
如果您想看到所拍摄的网址,则不会在任何地方对参数进行编码。您需要使用a
javascript在b
插值中对{{}}
以及encodeURIComponent
进行编码。为此,您需要在范围内创建一个包装方法,该方法将调用encodeURIComponent
方法并返回编码URL
,方法如下所示。
$scope.encodeContent = function(data){
return encodeURIComponent(data);
}
此后,您的URL
看起来像http://www.example.com/images.jpg?a={{encodeContent(a)}}&b={{encodeContent(b)}}
在将其附加到src
img
标记时,您需要首先评估插值&然后你就可以把这个网址视为你现在所信任的。
<强>标记强>
<img src="{{trustedUrl(x)}}" width="50" height="50"/>
<强>代码强>
$scope.trustedUrl = function(url){
var interpolatedUrl = $interpolate(url)($scope)
return $sce.trustAsResourceUrl(interpolatedUrl)
};