diff --git a/docs/demos/views/image-preview.vue b/docs/demos/views/image-preview.vue
index 7e81eed84..13f994cf9 100644
--- a/docs/demos/views/image-preview.vue
+++ b/docs/demos/views/image-preview.vue
@@ -7,6 +7,10 @@
{{ $t('button2') }}
+
+
+ {{ $t('button3') }}
+
@@ -17,21 +21,29 @@ export default {
i18n: {
'zh-CN': {
button1: '预览图片',
- button2: '指定初始位置'
+ button2: '指定初始位置',
+ button3: '手动关闭'
},
'en-US': {
button1: 'Show Images',
- button2: 'Custom Start Position'
+ button2: 'Custom Start Position',
+ button3: 'Close Manually'
}
},
methods: {
- showImagePreview(position) {
- ImagePreview([
+ showImagePreview(position, timer) {
+ const instance = ImagePreview([
'https://img.yzcdn.cn/upload_files/2017/03/15/FkubrzN7AgGwLlTeb1E89-T_ZjBg.png',
'https://img.yzcdn.cn/upload_files/2017/03/14/FmTPs0SeyQaAOSK1rRe1sL8RcwSY.jpeg',
'https://img.yzcdn.cn/upload_files/2017/03/15/FvexrWlG_WxtCE9Omo5l27n_mAG_.jpeg'
], typeof position === 'number' ? position : 0);
+
+ if (timer) {
+ setTimeout(() => {
+ instance.close();
+ }, timer);
+ }
}
}
};
diff --git a/docs/markdown/en-US/image-preview.md b/docs/markdown/en-US/image-preview.md
index 5fa8bd555..79d874435 100644
--- a/docs/markdown/en-US/image-preview.md
+++ b/docs/markdown/en-US/image-preview.md
@@ -25,6 +25,19 @@ ImagePreview([
], 1);
```
+#### Close Manually
+
+```javascript
+const instance = ImagePreview([
+ 'https://img.yzcdn.cn/1.jpg',
+ 'https://img.yzcdn.cn/2.jpg'
+]);
+
+setTimeout(() => {
+ instance.close();
+}, 1000);
+```
+
### Arguments
| Attribute | Description | Type |
diff --git a/docs/markdown/zh-CN/image-preview.md b/docs/markdown/zh-CN/image-preview.md
index 539965323..cf6e8bc1d 100644
--- a/docs/markdown/zh-CN/image-preview.md
+++ b/docs/markdown/zh-CN/image-preview.md
@@ -28,6 +28,19 @@ ImagePreview([
], 1);
```
+#### 手动关闭
+
+```javascript
+const instance = ImagePreview([
+ 'https://img.yzcdn.cn/1.jpg',
+ 'https://img.yzcdn.cn/2.jpg'
+]);
+
+setTimeout(() => {
+ instance.close();
+}, 1000);
+```
+
### 方法参数
| 参数名 | 说明 | 类型 |
diff --git a/packages/image-preview/image-preview.vue b/packages/image-preview/image-preview.vue
index 84ecdb22e..5c5c4247d 100644
--- a/packages/image-preview/image-preview.vue
+++ b/packages/image-preview/image-preview.vue
@@ -66,7 +66,7 @@ export default {
// prevent long tap to close component
const deltaTime = new Date() - this.touchStartTime;
if (deltaTime < 100 && Math.abs(this.deltaX) < 20 && Math.abs(this.deltaY) < 20) {
- this.value = false;
+ this.close();
}
}
}
diff --git a/packages/image-preview/index.js b/packages/image-preview/index.js
index 59c56d841..0110b3739 100644
--- a/packages/image-preview/index.js
+++ b/packages/image-preview/index.js
@@ -20,6 +20,11 @@ const ImagePreviewBox = (images, startPosition = 0) => {
instance.images = images;
instance.startPosition = startPosition;
instance.value = true;
+ instance.$on('input', show => {
+ instance.value = show;
+ });
+
+ return instance;
};
export default ImagePreviewBox;
diff --git a/packages/mixins/popup/popup-manager.js b/packages/mixins/popup/popup-manager.js
index dda1bceeb..4da186d7f 100644
--- a/packages/mixins/popup/popup-manager.js
+++ b/packages/mixins/popup/popup-manager.js
@@ -32,7 +32,7 @@ const PopupManager = {
}
},
- openModal({id, zIndex, dom, extraClass, extraStyle}) {
+ openModal({ id, zIndex, dom, extraClass, extraStyle }) {
const { modalStack } = context;
const exist = modalStack.some(item => item.id === id);
diff --git a/test/unit/specs/image-preview.spec.js b/test/unit/specs/image-preview.spec.js
index 1177d544c..aa04a5218 100644
--- a/test/unit/specs/image-preview.spec.js
+++ b/test/unit/specs/image-preview.spec.js
@@ -34,6 +34,9 @@ describe('ImagePreview', () => {
wrapper = mount(ImagePreviewVue);
wrapper.vm.images = images;
wrapper.vm.value = true;
+ wrapper.vm.$on('input', val => {
+ wrapper.vm.value = val;
+ });
expect(wrapper.hasClass('van-image-preview')).to.be.true;