• vue填坑之-组件嵌套


    参考: https://www.jianshu.com/p/b358cd920efa

    需求: 现有一组件,要做功能扩展! 所以要把v-model弄好

    原组件(借用一下):

    <template>
        <input
          type="checkbox"
          v-bind:checked="checked"
          v-on:change="$emit('change', $event.target.checked)"
        >
    </template>
    <script>
    export default {
        name: 'base-checkbox',
        model:{
            prop: 'checked',
            event: 'change'
        },
        props: {checked: Boolean}
    }

    如此使用:

    <base-checkbox v-model="lovingVue"></base-checkbox>

    扩展组件:

    <template>
      <base-checkbox v-model="newlovingVue"></base-checkbox>
    </template>
    <script>
    export default {
        name: 'special-checkbox ',
        model:{
            prop:'lovingVue', //要存在于proops
            event:'change' //当组件的值发生改变时要emit的事件名
        },
        props: ['lovingVue'],
        data:function(){
            return{//要重新定义一个data,赋值为props中的值,因为组件时单数据流,不能直接修改props
                newlovingVue:this.lovingVue
            } 
        },
        watch:{//这里检测data中的值,一旦发生变化就提交事件到父组件
            newlovingVue:function(newVal,oldVal){
                this.$emit('change',newVal)
            },
         //注:此处原文没有,如果不加上,复杂组件中父组件改变时,无法改变子组件,我就是被坑的不要不要的....
         lovingVue:function(val){
            this.newlovingVue= val;
          },
    
        }
    }
    </script>

    扩展后使用:

    <special-checkbox v-model="lovingVue"></base-checkbox>

    亲测真实有效!

    vue官网对应文档为: 

    https://cn.vuejs.org/v2/guide/components.html#在组件上使用-v-model
  • 相关阅读:
    基本IO流
    解决重载logf4j2配置文件问题
    vue-element-admin(1)
    asp.net 获取客服端ip,服务端ip
    页面传值
    C#基本语法复习-使用索引器
    C#基本语法复习-属性
    C#基本语法复习-使用垃圾回收和资源管理
    C#基本语法复习-创建接口和定义抽象类
    C#基本语法复习-使用继承
  • 原文地址:https://www.cnblogs.com/signal/p/11696347.html
Copyright © 2020-2023  润新知