vant/packages/uploader/index.vue
neverland 075f3290b4
[new feature] Uploader support inherit attrs (#357)
* fix: Tabbar icon line-height

* [new feature] progress add showPivot prop

* [new feature] TabItem support vue-router

* [new feature] update document header style

* [Doc] add toast english ducoment

* [bugfix] Search box-sizing wrong

* [Doc] update vant-demo respo

* [Doc] translate theme & demo pages

* [Doc] add Internationalization document

* [bugfix] remove unnecessary props

* [fix] optimize clickoutside

* [new feature] optimize find-parent

* [new feature]: change document title accordinng to language

* [new feature] Pagination code review

* [improvement] adjust icon-font unicode

* [improvement] Icon spinner color inherit

* [improvement] icon default width

* [bugfix] DateTimePicker validate date props

* [bugfix] Tab item text ellipsis

* [improvement] optimize single line ellipsis

* [Improvement] optimzie staticClass

* [Improvement] Button: use sfc instread of jsx

* [Improvement] update actionsheet close icon style

* fix: yarn.lock

* fix: icon test cases

* [bugfix] errors during ssr

* [Improvement] SubmitBar add left slot

* [new feature] ImagePreview support manually close

* fix: ImagePreview test case

* [Doc] add switch lang button in mobile

* [bugfix] Popup overlay style update

* [bugfix] NavBar click event

* [Improvement] optimize build speed

* [new feature] CellSwipe support async controll

* [new feature] Uploader support inherit attrs
2017-11-28 10:43:09 +08:00

58 lines
1.1 KiB
Vue

<template>
<div class="van-uploader">
<slot></slot>
<input
ref="input"
type="file"
class="van-uploader__input"
v-bind="$attrs"
:disabled="disabled"
@change="onValueChange"
/>
</div>
</template>
<script>
export default {
name: 'van-uploader',
props: {
disabled: Boolean,
beforeRead: Function,
afterRead: Function,
resultType: {
type: String,
default: 'dataUrl'
}
},
methods: {
onValueChange(event) {
if (this.disabled) {
return;
}
const file = event.target.files[0];
if (!file || (this.beforeRead && !this.beforeRead(file))) {
return;
}
const reader = new FileReader();
reader.onload = (e) => {
this.afterRead && this.afterRead({
file,
content: e.target.result
});
this.$refs.input && (this.$refs.input.value = '');
};
if (this.resultType === 'dataUrl') {
reader.readAsDataURL(file);
} else if (this.resultType === 'text') {
reader.readAsText(file);
}
}
}
};
</script>