2016-07-11 2 views
0

AngularJSのjqlite attr()で破損したURLが存在しない場合、すべての破損したimg urlをデフォルトに置き換えます。私はこのように使用しますが、動作しません。AngularJS jqliteで破損した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タグでNGの場合付加する機能やスコープVAR

チェックでこのSRCを実装しますか? – 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()"/> 

このplnkr https://plnkr.co/edit/S6KDo2crjMGASKtrToGo?p=preview

+0

の確認方法すべての ''タグに 'onerror'属性を動的に追加するには? –

+0

あなたはonerror = "angle.element(this).scope()。imgError()"を実行する必要があります。 – Erez

関連する問題