:::::: hmtl logic :::::
<img class="imageCss" ng-src="{{getImage(id)}}">
控制器范围内的:::: angular js方法::::
$scope.getImage = function getImage(id){
console.log("in getImages");
console.log("id " + id);
var testData = $http.get('http:/images/getImage.do?imageId='+id).then(function(result) {
console.log(result);
return result;
});
//console.log("testData " + testData);
}
来自ng-src
的此方法调用会触发无限循环。我怀疑http请求是这样做的。我不知道这里出了什么问题。
有人可以帮助我吗?
答案 0 :(得分:1)
导致无限循环,因为:
$http
会隐式调用$apply
函数,这将启动$digest
$digest
再次评估ng-src
。 ng-src
将调用函数getImage
getImage
将调用$http
... 您可以在HTML和控制器中使用ng-src="data:image/png;base64,{{imageSrc[id]}}"
:
$scope.imageSrc = {};
for (var i = 0; i < ids.length; i++) {
var id = ids[i];
$http.get('http:/images/getImage.do?imageId='+id).then(function (data) {
$scope.imageSrc[id] = data;
});
}
for
循环后,imageSrc
对象将如下:
{
1: 'binary content of the image',
11: 'binary content of the image',
20: 'binary content of the image',
...
}
然后在imageSrc
请求完成后,$http
将自动更新。