Vue 组件实现数据双向绑定(el

一、组件 v-model 值通过 props 传入,必须定义为 value

二、将传入的 value 在 data 中重新定义赋值,以便子组件改变值(子组件中不能直接修改 props 中的值)

三、监听 value:使 value 能在初始化时有值,监听 data(svalue):使子组件修改值通知给父组件同步(重要

自用封装中 el-select 组件代码

1<template> 2 <el-select 3 :clearable="sClearable" 4 :disabled="sDisabled" 5 :class="sClass" 6 v-model="svalue" 7 sPlaceholder="全部" 8 @change="sChange" 9 > 10 <el-option 11 v-for="item in options" 12 :key="item[keys?keys:option]" 13 :label="item[label]" 14 :value="item[option]" 15 ></el-option> 16 </el-select> 17</template> 18 19<script> 20export default { 21 props: { 22 value: { 23 type: [String, Number], 24 required: true 25 }, 26 options: { 27 type: Array, 28 required: true 29 }, 30 keys: { 31 type: String, 32 default: "" 33 }, 34 label: { 35 type: String, 36 default: "Text" 37 }, 38 option: { 39 type: String, 40 default: "Value" 41 }, 42 sClass: { 43 type: String, 44 default: "querySelect" 45 }, 46 sClearable: { 47 type: Boolean, 48 default: true 49 }, 50 sPlaceholder: { 51 type: String, 52 default: "全部" 53 }, 54 sDisabled: { 55 type: Boolean, 56 default: false 57 } 58 }, 59 data() { 60 return { 61 svalue: this.value 62 }; 63 }, 64 methods: { 65 sChange() { 66 this.$emit("sChange"); 67 } 68 }, 69 watch: { 70 value(newVal) { 71 this.svalue = newVal; 72 }, 73 svalue(newVal, oldVal) { 74 if (newVal !== oldVal) { 75 this.$emit("input", this.svalue); 76 } 77 } 78 } 79}; 80</script>

View Code

四、父组件中使用,只需要添加 v-model 绑定值即可

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

vue最新面试题

最近在面试,总结几个重点的面试题:一、vue父子组件之间的传值:简单来说,子组件通过props方法接受父组件传来的值,子组件通过$emit方法来向父组件发送数据。(具体案例可以看我之前写的博客)。二、vue生命周期函数:beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestr

vue的8种通信方式

1.props/emit1.父组件向子组件传值下面通过一个例子说明父组件如何向子组件传递数据:在子组件article.vue中如何获取父组件section.vue中的数据articles:\'红楼梦','西游记','三国演义'\//section父组件<template<divclass"section"