angularjs – 强制ng-src重新加载

前端之家收集整理的这篇文章主要介绍了angularjs – 强制ng-src重新加载前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当图像的URL没有改变,但是它的内容有没有改变时,如何强制angularjs使用ng-src属性重新加载图像?
  1. <div ng-controller='ctrl'>
  2. <img ng-src="{{urlprofilephoto}}">
  3. </div>

执行文件上传的uploadReplace服务会替换图片内容,而不是网址。

  1. app.factory('R4aFact',['$http','$q','$route','$window','$rootScope',function($http,$q,$route,$window,$rootScope) {
  2. return {
  3. uploadReplace: function(imgfile,profileid) {
  4. var xhr = new XMLHttpRequest(),fd = new FormData(),d = $q.defer();
  5. fd.append('profileid',profileid);
  6. fd.append('filedata',imgfile);
  7. xhr.onload = function(ev) {
  8. var data = JSON.parse(this.responseText);
  9. $rootScope.$apply(function(){
  10. if (data.status == 'OK') {
  11. d.resolve(data);
  12. } else {
  13. d.reject(data);
  14. }
  15. });
  16. }
  17. xhr.open('post','/profile/replacePhoto',true)
  18. xhr.send(fd)
  19. return d.promise;
  20. }
  21. }
  22. }]);

当uploadReplace返回时,我不知道如何强制图像重新加载

  1. app.controller('ctrl',['$scope','R4aFact',function($scope,R4aFact){
  2. $scope.clickReplace = function() {
  3. R4aFact.uploadReplace($scope.imgfile,$scope.pid).then(function(){
  4. // ?? here I need to force to reload the imgsrc
  5. })
  6. }
  7. }])
一个简单的解决方法是将一个唯一的时间戳附加到ng-src以强制重新加载图像,如下所示:
  1. $scope.$apply(function () {
  2. $scope.imageUrl = $scope.imageUrl + '?' + new Date().getTime();
  3. });

要么

  1. angular.module('ngSrcDemo',[])
  2. .controller('AppCtrl',function ($scope) {
  3. $scope.app = {
  4. imageUrl: "http://example.com/img.png"
  5. };
  6. var random = (new Date()).toString();
  7. $scope.imageSource = $scope.app.imageUrl + "?cb=" + random;
  8. }]);

猜你在找的Angularjs相关文章