自定义组件的 v-model

官方地址:https://cn.vuejs.org/v2/guide/components-custom-events.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E7%9A%84-v-model
 

// 子组件
<template>
  <el-select v-model="saveDataType" placeholder="行业" class="video-type" @change="$emit('dataTypeChange', saveDataType)">
    <el-option label="全部" value=""></el-option>
    <el-option v-for="item in industrySelectList" :key="item.description" :value="item.description" :label="item.description"></el-option>
  </el-select>
</template>

<script>
export default {
  name: 'userGroupSelect',
  props: {
    DataType: {
      type: String
    }
  },
  model: {
    prop: 'DataType',
    event: 'dataTypeChange'
  },
  data() {
    return {
      saveDataType: this.DataType,
      industrySelectList: []
    }
  }
</script>


// 父组件
<industry v-model="subParams.domainNames"/>


 

<template>
  <el-select v-model="selectedIndustry" multiple placeholder="行业" class="video-type" @change="handleChange">
    <el-option label="全部" value=""></el-option>
    <el-option v-for="item in industrySelectList" :key="item.description" :value="item.description" :label="item.description"></el-option>
  </el-select>
</template>

<script>
export default {
  methods: {
    handleChange(val) {
      if(this.selectedIndustry && this.selectedIndustry.length > 0) {
        let current = this.selectedIndustry[this.selectedIndustry.length - 1]
        if(current === '') {
          this.selectedIndustry = ['']
          this.$emit('input', [])
        } else {
          this.selectedIndustry = this.selectedIndustry.filter(item => item !== '')
          this.$emit('input', this.selectedIndustry)
        }
      } else {
        this.$emit('input', [])
      }
    }
  }
}
</script>


第一种  设置 props  和 model
第二种  用 this.$emit('input', name)   实现v-model绑定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值