반응형
폴백 이미지에 대한 각도 지시
다른 서버에 이미지가 없는 경우는 디폴트 이미지를 표시하고 싶습니다.이를 달성하기 위한 각도 지시가 있습니까?
아니요, 만들 수 있습니다.
HTML:
<img fallback-src="http://google.com/favicon.ico" ng-src="{{image}}"/>
JS:
myApp.directive('fallbackSrc', function () {
var fallbackSrc = {
link: function postLink(scope, iElement, iAttrs) {
iElement.bind('error', function() {
angular.element(this).attr("src", iAttrs.fallbackSrc);
});
}
}
return fallbackSrc;
});
각도 지시가 있나요?
http://ngmodules.org/modules/angular-img-fallback
Github: https://github.com/dcohenb/angular-img-fallback
(현재 별 32개)
Angualr 2 버전
https://github.com/VadimDez/ng2-img-fallback
HTML
<img fallback-src="http://google.com/favicon.ico" src="http://google.com/failedImage.png"/>
Angular 2 구성 요소
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({
selector: '[fallback-src]'
})
export class FallbackSrc {
@Input('fallback-src') imgSrc: string;
private el: HTMLElement;
private isApplied: boolean = false;
private EVENT_TYPE: string = 'error';
constructor(el: ElementRef) {
this.el = el.nativeElement;
this.el.addEventListener(this.EVENT_TYPE, this.onError.bind(this))
}
private onError() {
this.removeEvents();
if (!this.isApplied) {
this.isApplied = true;
this.el.setAttribute('src', this.imgSrc);
}
}
private removeEvents() {
this.el.removeEventListener(this.EVENT_TYPE, this.onError);
}
ngOnDestroy() {
this.removeEvents();
}
}
내가 직접 폴백 리브를 썼어
꽤 심플하고 간단한 각도 폴백 이미지 lib:
https://github.com/alvarojoao/angular-image-fallback
이미지 로드 및 이미지 오류 처리 유틸리티로, 이미지 로드 및 이미지 로드 시 오류를 처리하는 이미지 홀더가 있습니다.
http://alvarojoao.github.io/angular-image-fallback
사용.
이미지 애트리뷰트를 추가하기만 하면 됩니다.<img />
태그
<img image="{{'path/to/img.jpg'}}" />
사용하지 않는 메이크업ng-src
이미지 그대로src
기여하다.
고급 옵션
커스텀 폴백 및 로딩 플레이스 홀더:
<img image="{{image.url}}" image-loading="/image/loading.gif"
image-holder="/image/error.png" />
예:
https://jsfiddle.net/alvarojoao/4wec4gsq/embedded/result/
언급URL : https://stackoverflow.com/questions/16349578/angular-directive-for-a-fallback-image
반응형
'code' 카테고리의 다른 글
for 'ng-model for 'for 'ng-model for 'for 'ng-model for 'DEMO ) (DEMO)DEMO ) (DEMO)DEMO ) (DEMO) (0) | 2023.03.09 |
---|---|
스프링 데이터 jpa 스타터에서 javax.persistence-api가 jakarta.persistence-api로 대체된 이유는 무엇입니까? (0) | 2023.03.09 |
ui-module:뷰 템플릿이 없는 루트 (0) | 2023.03.09 |
TypeScript 코멘트의 구문은 어디에 기재되어 있습니까? (0) | 2023.03.09 |
AngularJs에서 개인 메서드를 사용하여 테스트 가능한 컨트롤러를 작성하는 방법은 무엇입니까? (0) | 2023.03.09 |