From d4335d26afc929b0377057bef6790522c371b96c Mon Sep 17 00:00:00 2001 From: neverland Date: Mon, 16 Sep 2019 20:07:48 +0800 Subject: [PATCH] feat(Uploader): add index param (#4460) --- src/uploader/README.md | 4 ++-- src/uploader/README.zh-CN.md | 4 ++-- src/uploader/index.js | 29 +++++++++++++---------------- src/uploader/test/index.spec.js | 2 +- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/uploader/README.md b/src/uploader/README.md index 3fcbb76ba..e3fe17387 100644 --- a/src/uploader/README.md +++ b/src/uploader/README.md @@ -135,7 +135,7 @@ export default { | oversize | Triggered when file size over limit | Same as after-read | | click-preview | Triggered when click preview image | Same as after-read | | close-preview | Triggered when close full screen image preview | - | -| delete | Triggered when delete preview file | file | +| delete | Triggered when delete preview file | Same as after-read | ### Slots @@ -148,4 +148,4 @@ export default { | Attribute | Description | Type | |------|------|------| | file | File object | *object* | -| detail | Detail info | *object* | +| detail | Detail info, contains name and index | *object* | diff --git a/src/uploader/README.zh-CN.md b/src/uploader/README.zh-CN.md index 5f127485c..287cf2c67 100644 --- a/src/uploader/README.zh-CN.md +++ b/src/uploader/README.zh-CN.md @@ -151,7 +151,7 @@ export default { | oversize | 文件大小超过限制时触发 | 同`after-read` | | click-preview | 点击预览图时触发 | 同`after-read` | | close-preview | 关闭全屏图片预览时触发 | - | -| delete | 删除文件预览时触发 | file: 被删除的文件对象 | +| delete | 删除文件预览时触发 | 同`after-read` | ### Slots @@ -166,4 +166,4 @@ before-read、after-read、before-delete 执行时会传递以下回调参数: | 参数名 | 说明 | 类型 | |------|------|------| | file | 文件解析后的 file 对象 | *object* | -| detail | 额外信息,包含 name 字段 | *object* | +| detail | 额外信息,包含 name 和 index 字段 | *object* | diff --git a/src/uploader/index.js b/src/uploader/index.js index b9a1a8b3c..9e0969901 100644 --- a/src/uploader/index.js +++ b/src/uploader/index.js @@ -59,18 +59,19 @@ export default createComponent({ }, computed: { - detail() { - return { - name: this.name - }; - }, - previewSizeWithUnit() { return addUnit(this.previewSize); } }, methods: { + getDetail(index = this.fileList.length) { + return { + name: this.name, + index + }; + }, + onChange(event) { let { files } = event.target; @@ -81,7 +82,7 @@ export default createComponent({ files = files.length === 1 ? files[0] : [].slice.call(files); if (this.beforeRead) { - const response = this.beforeRead(files, this.detail); + const response = this.beforeRead(files, this.getDetail()); if (!response) { this.resetInput(); @@ -129,7 +130,7 @@ export default createComponent({ onAfterRead(files, oversize) { if (oversize) { - this.$emit('oversize', files, this.detail); + this.$emit('oversize', files, this.getDetail()); return; } @@ -137,13 +138,13 @@ export default createComponent({ this.$emit('input', [...this.fileList, ...toArray(files)]); if (this.afterRead) { - this.afterRead(files, this.detail); + this.afterRead(files, this.getDetail()); } }, onDelete(file, index) { if (this.beforeDelete) { - const response = this.beforeDelete(file, this.detail); + const response = this.beforeDelete(file, this.getDetail(index)); if (!response) { return; @@ -167,7 +168,7 @@ export default createComponent({ fileList.splice(index, 1); this.$emit('input', fileList); - this.$emit('delete', file); + this.$emit('delete', file, this.getDetail(index)); }, resetInput() { @@ -196,10 +197,6 @@ export default createComponent({ }); }, - onClickPreview(file) { - this.$emit('click-preview', file, this.detail); - }, - renderPreviewItem(item, index) { const DeleteIcon = ( { - this.onClickPreview(item); + this.$emit('click-preview', item, this.getDetail(index)); }} > {Preview} diff --git a/src/uploader/test/index.spec.js b/src/uploader/test/index.spec.js index be37a1fef..875e263cd 100644 --- a/src/uploader/test/index.spec.js +++ b/src/uploader/test/index.spec.js @@ -354,7 +354,7 @@ it('click-preview event', () => { wrapper.find('.van-image').trigger('click'); expect(wrapper.emitted('click-preview')[0][0]).toEqual({ url: IMAGE }); - expect(wrapper.emitted('click-preview')[0][1]).toEqual({ name: '' }); + expect(wrapper.emitted('click-preview')[0][1]).toEqual({ name: '', index: 0 }); }); it('close-preview event', async () => {