首页 >web前端 >Vue.js >Ant Design Vue中如何让Textarea组件有“字数统计”功能

Ant Design Vue中如何让Textarea组件有“字数统计”功能

青灯夜游
青灯夜游转载
2021-12-21 10:47:435481浏览

Ant Design Vue 默认的 Textarea 组件是没有字数统计功能的,但有时有需要,下面给大家介绍一下怎么让Textarea组件有“字数统计”功能,希望对大家有所帮助!

Ant Design Vue中如何让Textarea组件有“字数统计”功能

推荐一个实用的“字数统计”功能:Ant Design Vue 默认的 Textarea 组件是没有字数统计功能的,但这个功能又是很常见的,所以就做了一个简单的二次封装。其实这个功能很简单,就是在不改变原组件的情况下,右下角加上一个计数文本,用定位处理一下就行。

默认的 textarea

官网地址:https://antdv.com/components/input-cn/

基本使用如下所示:

<a-textarea v-model="desc" placeholder="请输入描述" :auto-size="false" />

1.png

改造后的 textarea

$attrsv-model实现原理可查看上一篇文章封装原理解析(https://juejin.cn/post/7003280618473668639#heading-3)

<template>
  <div>
    // 文本框
    <a-textarea
     
      v-bind="$attrs"
      v-model="$attrs.value"
      @change="onChange"
    />
    // 字数统计
    <span v-if="showWordLimit"
      >{{ textLength }}/<template v-if="$attrs.maxLength"
        >{{ $attrs.maxLength }}</template
      ></span
    >
  </div>
</template>

<script>
  export default {
    props: {
      // 是否展示字数统计
      showWordLimit: {
        type: Boolean,
        default: false,
      },
    },
    // v-model处理
    model: {
      prop: "value",
      event: "change",
    },
    computed: {
      // 长度控制
      textLength() {
        return (this.$attrs.value || "").length;
      },
    },
    methods: {
      onChange(e) {
        // v-model 回调函数
        this.$emit("change", e.target.value);
      },
    },
  };
</script>

<style scoped>
  .textarea-wrapper {
    position: relative;
    display: block;

    .m-textarea {
      padding: 8px 12px;
      height: 100%;
    }

    .m-count {
      color: #808080;
      background: #fff;
      position: absolute;
      font-size: 12px;
      bottom: 8px;
      right: 12px;
    }
  }
</style>

使用也很简单,和正常的 textarea 一样就行。如果要开启字数统计,showWordLimitmaxLength都要配置才行。

<m-textarea
  v-model="desc"
  :showWordLimit="true"
  :maxLength="20"
  :autoSize="false"
  placeholder="请输入描述"
/>

2.png

更多编程相关知识,请访问:编程视频!!

以上是Ant Design Vue中如何让Textarea组件有“字数统计”功能的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:juejin.cn。如有侵权,请联系admin@php.cn删除