一、基础准备工作

1、创建一个基础的vue项目包

2、创建components文件夹,用于存放组件,新建input.vue组件,可以自己取个名字

<script>
export default {name: "CatInput",
};
</script>

3、在main.js中引入组件

import CatInput from "./components/input.vue";
Vue.component(CatInput.name, CatInput);

4、App.vue中使用组件

二、input组件结构搭建

主要功能为:输入框类型切换、双向数据绑定、清空输入框、密码明文显示切换

输入框需要绑定v-model,实际上是一个语法糖,等价于:

:value="uname"

@input="uname=$event.target.value"

需要传入的参数:

placeholder:字段预期值的提示信息

type:文本框类型

name:name

disabled:是否禁用

value:值

clearable:是否显示清空按钮

showPassword:密码显示

data中,添加字段 passwordVisiable,控制是否明文显示密码,因为子组件无法直接修改父组件传入的type值

页面效果:

input.vue 具体代码如下,style样式太多,不逐一列出了,可根据需求自己定义:

<template><div class="cat-input" :class="{ 'cat-input--suffix': showSuffix }"><!-- type:先判断是否有传入显示密码,控制输入框类型是文本/密码,然后是type传入的值 --><input:type="showPassword ? (passwordVisiable ? 'text' : 'password') : type"class="cat-input__inner":placeholder="placeholder":name="name":disabled="disabled":class="{ 'is-disabled': disabled }":value="value"@input="handleinput"/><span class="cat-input__suffix" v-if="showSuffix"><iclass="cat-input__icon cat-icon-circle-close"v-if="clearable && value"@click="clear"></i><iclass="cat-input__icon cat-icon-view":class="{ 'cat-icon-view-active': passwordVisiable }"v-if="showPassword"@click="handlepwd"></i></span></div>
</template><script>
export default {name: "CatInput",props: {placeholder: {type: String,default: "",},type: {type: String,default: "text",},name: {type: String,default: "",},disabled: {type: Boolean,default: false,},value: {type: String,default: "",},clearable: {type: Boolean,default: false,},showPassword: {type: Boolean,default: false,},},data() {return {passwordVisiable: false, //控制是否显示密码};},methods: {handleinput(event) {//父组件在绑定v-model时,其实就绑定的input事件,因此父组件不需要再声明事件了this.$emit("input", event.target.value);},clear() {this.$emit("input", "");},handlepwd() {this.passwordVisiable = !this.passwordVisiable;},},computed: {//有清空/显示密码,添加类名、显示spanshowSuffix() {return this.clearable || this.showPassword;},},
};
</script>

 

App.vue使用input组件:

<template><!-- 输入框需要绑定v-model,实际上是一个语法糖,等价于::value="uname"@input="uname=$event.target.value"--><div><Cat-inputplaceholder="请输入用户名"type="text"v-model="uname"clearable></Cat-input><br /><Cat-input placeholder="禁用的输入框" disabled></Cat-input><br /><Cat-inputplaceholder="请输入密码"v-model="upwd"show-password></Cat-input></div>
</template><script>
export default {data() {return {uname: "",upwd: "",};},
};
</script><style lang="scss" scoped>
.cat-input {margin-bottom: 10px;
}
</style>

Vue组件封装 ——input 输入框组件相关推荐

  1. elemen-UI 组件:input输入框 的 样式、代码、效果图对比 - 应用篇

    elemen-UI 输入框组件的样式问题:+栅格系统 使用可定义宽度等细节处理 提示:具体参考项目为准. 效果图对比: 代码如下:(2种) <el-form :model="form& ...

  2. php 小程序自定义图,微信小程序之如何使用自定义组件封装原生 image 组件

    零.问题的由来 一般在前端展示图片时都会碰到这两个常见的需求: 图片未加载完成时先展示占位图,等到图片加载完毕后再展示实际的图片. 假如图片链接有问题(比如 404),依然展示占位图.甚至你还可以增加 ...

  3. Vue+ElementUI 之 input输入框 添加自定义图片

    Vue+ElementUI 之 input输入框 添加自定义图片 效果图如图: <el-form ref="formData" :model="formData&q ...

  4. Vue 组件开发 - 数据输入框组件

    目录 设计通用组件的一般思路 组件效果 1. HTML结构 2. index.js 3. input-number.js 3.1 input-number.js代码注解 设计通用组件的一般思路 明确需 ...

  5. input change获取改变之前的值和改变之后的值_使用Vue3.0新特性造轮子 WidgetUI3.0 (Input输入框组件)

    我们先看看组件效果图: 基本用法 type属性(type="password") 占位符(placeholder="请输入") 带清除按钮(clear) 输入限 ...

  6. 基于vue element 封装上传组件

    基于vue element封装的上传组件 使用方法: 1.首先引入该组件 2.注册组件 3.页面使用 4.回调函数(如需其他回调自行封装 因为我暂时没用到其他的  哈哈哈) <template& ...

  7. Vue组件封装 ——dialog对话框组件

     一.基础准备工作 1.创建一个基础的vue项目包 2.创建components文件夹,用于存放组件,新建dialog.vue组件,可以自己取个名字 <script> export def ...

  8. 在uni-app中使用vue语法封装个计数器组件

    效果如下: 1.在components中新建个counter.vue 组件 <template><!-- 计数器 --><view class="counter ...

  9. vue input只能输入正整数_前端开发:Vue中获取input输入框值的方法

    在前端开发过程中,会用到各种各样的基础组件,一些常用的组件的使用方法一定要滚熟于心,对于刚入门的新手来说,对基础知识的熟练掌握很重要,如果不熟练就会影响开发速度.那么本篇博文就来分享一个比较基础的知识 ...

最新文章

  1. 分享一个让 Ping 的输出更简单易读方法
  2. Retrofit的动态代理
  3. Z.XML第二次迭代分数分配
  4. P2651 添加括号III(python3实现)
  5. 网友投诉顺丰快递员私拆快递物品摆拍、言语骚扰 官方处理来了...
  6. runtime 分类结构体_几种常见滚动轴承的分类方法
  7. Java并发编程实战读书笔记之死锁
  8. C# list常用的几个操作 改变list中某个元素的值 替换某一段数据 删除集合中指定对象
  9. Unity3d 好友管理系统
  10. 工程导论-----创造力
  11. html倒计时插,JS倒计时插件
  12. UI设计师的7大能力模型
  13. java集合框架之集合工具类Arrays类
  14. 一文读懂 delete和delete[ ]
  15. 微信服务器 系统发生错误,微信系统错误请重试怎么解决-解决微信提示“系统错误,请重试”的方案 - 河东软件园...
  16. cesium接入百度影像地图(cesium篇.27)
  17. 服务器操找不见系统,服务器提示找不到操作系统
  18. prach频域位置_[转载]zz LTE PRACH时频资源及选择
  19. kill命令详解kill -9、kill -15区别
  20. 手写JavaScript常见5种设计模式

热门文章

  1. js获取class里面的内容
  2. Linux同步时间chrony替换NTP简单好用
  3. 3ds Max .NET二次开发的基础入门篇
  4. 阐述地球化学土壤垂向剖面重金属研究现状
  5. 怎样删除hao123(浏览器首页被篡改了)
  6. openai-gpt_GPT-3是一个了不起的研究工具。 但是,OpenAI不共享代码。
  7. 安全色谱与Web配色技巧
  8. 保险公司“大都会人寿”以新兴企业态度应对大数据挑战
  9. 教学向|骨骼构建模太难?zbrush骨骼建模详细讲解(上)
  10. vue 引入第三方js报错undefined