diff --git a/packages/components/avatar/__test__/index.test.js b/packages/components/avatar/__test__/index.test.js index 5ae843532f..d3622081bc 100644 --- a/packages/components/avatar/__test__/index.test.js +++ b/packages/components/avatar/__test__/index.test.js @@ -82,6 +82,18 @@ describe('Avatar & Avatar Groups', () => { await simulate.sleep(20); expect($wrapper.dom.style.display).toBe('none'); }); + + it(':alt fallback when image load failed', async () => { + const comp = simulate.render(id); + comp.attach(document.createElement('parent-wrapper')); + + const $image = comp.querySelector('.error-avatar-wrapper >>> #image'); + $image.dispatchEvent('error'); + await simulate.sleep(20); + + const $text = comp.querySelector('.error-avatar-wrapper >>> .t-avatar__text'); + expect($text.dom.textContent).toBe('avatar'); + }); }); describe('Avatar Group Props', () => { diff --git a/packages/components/avatar/avatar.ts b/packages/components/avatar/avatar.ts index b12e4c2fed..9306f7b97d 100644 --- a/packages/components/avatar/avatar.ts +++ b/packages/components/avatar/avatar.ts @@ -26,6 +26,7 @@ export default class Avatar extends SuperComponent { prefix, classPrefix: name, isShow: true, + isImageLoadFailed: false, zIndex: 0, windowWidth: systemInfo.windowWidth, }; @@ -52,6 +53,11 @@ export default class Avatar extends SuperComponent { ...obj, }); }, + image() { + this.setData({ + isImageLoadFailed: false, + }); + }, }; methods = { @@ -66,6 +72,10 @@ export default class Avatar extends SuperComponent { this.setData({ isShow: false, }); + } else { + this.setData({ + isImageLoadFailed: true, + }); } this.triggerEvent('error', e.detail); }, diff --git a/packages/components/avatar/avatar.wxml b/packages/components/avatar/avatar.wxml index a851deb8ca..282fba87b6 100644 --- a/packages/components/avatar/avatar.wxml +++ b/packages/components/avatar/avatar.wxml @@ -28,7 +28,7 @@ aria-hidden="{{ ariaHidden }}" >