我正在服务器上旋转图像,我想知道如何在我的页面上显示图像更改?
我想我必须使用$ scope。$ apply()但每次我使用它时都会收到错误消息“digest cycle in progress”
template.html
< img src='{{tempimagefilepath}}/> <!--image-->
controller.js
photoalbumServ.rotate_photo(post).then(function(data) {
//after server modifies photo
$scope.tempimagefilepath = $scope.baseurl + "user_images/user_43/temp/123-temp.jpg";
$scope.$apply();
});
感谢
解决方案:
我的解决方案是更改范围值{{tempimagefilepath}},以便更改图像。这要求我在旋转图像时不断重命名服务器上的文件。
答案 0 :(得分:7)
两件事。首先,您应该使用ng-src
而不是src
来阻止您的客户在角度评估表达式之前尝试加载图片。
其次,传递$apply()
一个函数回调,它会进行必要的范围更改:
photoalbumServ.rotate_photo(post).then(function(data) {
//after server modifies photo
$scope.$apply(function() {
$scope.tempimagefilepath = $scope.baseurl + "user_images/user_43/temp/123-temp.jpg";
});
});
答案 1 :(得分:4)
我认为这是因为您的浏览器缓存。不需要$ apply()
试试这个
var random = (new Date()).toString();
$scope.tempimagefilepath = newUrl + "?cb=" + random;
答案 2 :(得分:2)
您可以尝试使用ng-src
代替src
<img ng-src="{{tempimagefilepath}}" />
我认为你不需要做范围。$ apply();然后
答案 3 :(得分:0)
Template HTML
< img ng-src='{{tempimagefilepath}}/>
AngularJS Code
photoalbumServ.rotate_photo(post).then(function(data) {
//after server modifies photo
$scope.$apply(function() {
$scope.tempimagefilepath = $scope.baseurl + "user_images/user_43/temp/123-temp.jpg";
});
});
答案 4 :(得分:0)
使用ng-src,就像其他人所说的那样。但是,请务必参考您的控制器
[[0. 2. 2.]
[2. 0. 1.]
[2. 1. 0.]]