Как заставить angularjs перезагружать изображение атрибутом ng-src, когда URL-адрес изображения не изменился, но его содержимое имеет?Принуждение перезагрузки ng-src
<div ng-controller='ctrl'>
<img ng-src="{{urlprofilephoto}}">
</div>
услуга uploadReplace, которая выполняет загрузку файла, заменяет содержимое изображения, но не в URL.
app.factory('R4aFact', ['$http', '$q', '$route', '$window', '$rootScope',
function($http, $q, $route, $window, $rootScope) {
return {
uploadReplace: function(imgfile, profileid) {
var xhr = new XMLHttpRequest(),
fd = new FormData(),
d = $q.defer();
fd.append('profileid', profileid);
fd.append('filedata', imgfile);
xhr.onload = function(ev) {
var data = JSON.parse(this.responseText);
$rootScope.$apply(function(){
if (data.status == 'OK') {
d.resolve(data);
} else {
d.reject(data);
}
});
}
xhr.open('post', '/profile/replacePhoto', true)
xhr.send(fd)
return d.promise;
}
}
}]);
Когда uploadReplace возвращается, я не знаю, как я могу заставить изображение перезагрузить
app.controller('ctrl', ['$scope', 'R4aFact', function($scope, R4aFact){
$scope.clickReplace = function() {
R4aFact.uploadReplace($scope.imgfile, $scope.pid).then(function(){
// ?? here I need to force to reload the imgsrc
})
}
}])
Набор 'urlprofilephoto' пустым, а затем установить его в URL снова. – Chandermani
Может быть с '$ scope. $ Apply'? – Cherniv
Устранение URL-адреса, а затем его установка снова, отправляет на сервер фиктивный запрос, которого следует избегать. $ scope. $ Apply не проблема. Андер фабричной функции уже находится в $ rootScope. $ Apply –