TextArea.vue 1.07 KB
<template>
  <el-input
    v-model="textAreaVal"
    type="textarea"
    rows="3"
    :placeholder="placeholder"
    :disabled="disabled"
    :maxlength="maxLength"
    show-word-limit
    @input="handleInput"
    @change="handleChange"
    @blur="handleBlur"
    @focus="handleFocus"
  />
</template>
<script>
export default {
  name: 'RcInput',
  components: {},
  props: {
    value: {
      type: [String, Number],
      default: ''
    },
    placeholder: String,
    disabled: Boolean,
    maxLength: {
      type: Number,
      default() {
        return 300
      }
    }
  },
  data() {
    return {
      textAreaVal: this.value
    }
  },
  computed: {},
  watch: {
    value(newVal) {
      this.textAreaVal = newVal
    }
  },
  created() {},
  mounted() {
  },
  methods: {
    handleChange(e) {
      this.$emit('change', e)
    },
    handleInput(e) {
      this.$emit('input', e)
    },
    handleBlur(e) {
      this.$emit('blur', e)
    },
    handleFocus(e) {
      this.$emit('focus', e)
    }
  }
}
</script>
<style lang="stylus" scoped>
  .el-textarea
    width 400px
</style>