2016-07-11 46 views
0

当AngularJS jqlite attr()不存在损坏的URL时,我想用默认值替换所有损坏的img url。我这样使用它,但不会工作。当AngularJS jqlite不存在损坏的URL时,用默认的URL替换已损坏的img url

var app = angular.module('app'); 

app.controller('AdminCtrl',function($scope{ 
    angular.element(document.querySelector('img')).attr("onerror","this.src='../assets/img/broken/broken-link.png'"); 
}) 

什么是正确的脚本?

+0

添加如果与img标签不够的,你纳克? – Erez

+0

@Erez不,有时候'ng-src'有链接,但服务器上的那个文件被删除 –

回答

1

你有已经这样做的库。

检查angular-fallback-srcangular-img-fallback

+0

如何在不使用伪指令的情况下实现它? –

+0

你必须处理'onError',但它是一个事件,而不是属性。这是你的代码中的错误。 – Ygalbel

+0

如何动态添加'onerror'事件? –

1

有解决这个

尝试下一个选项几种方法

myApp.directive('onErrorSrc', function() { 
    return { 
     link: function(scope, element, attrs) { 
      element.bind('error', function() { 
       if (attrs.src != attrs.onErrorSrc) { 
       attrs.$set('src', attrs.onErrorSrc); 
       } 
      }); 
     } 
    } 
    }); 

<img ng-src="wrongUrl.png" on-error-src="someurl.png"/> 

或者

<img ng-src="{{ imagesrc}}" onerror="this.src='someimgsrc.png'"/> 

,你不想使用指令,你可以使用这个IMG标记线将使为你工作

动态地做到这一点

<img ng-src="{{ imagesrc}}" nerror="angular.element(this).scope().imgError()"/> 

和执行功能或范围VAR

检查这个src这plnkr https://plnkr.co/edit/S6KDo2crjMGASKtrToGo?p=preview

+0

如何动态地为''标签添加'onerror'属性? –

+0

你应该做onerror =“angular.element(this).scope()。imgError()” – Erez