美文网首页
vue父子组件的双向绑定

vue父子组件的双向绑定

作者: 稻草人_9ac7 | 来源:发表于2019-11-25 15:12 被阅读0次

    父组件可以向子组件传值,修改。同时,子组件也可以向父组件传值和修改

    父组件的分析:父组件使用v-model实现双向绑定。

    //父组件
    <template>
        <div>
            <div class="test">
                测试主页面
                <chldren1 v-model="msg"></chldren1>
                <p>父组件该的值{{msg}}</p>
                <button @click="fn">父组件该的值</button>
            </div>
              <Navgation></Navgation>
        </div>
    </template>
    <script>
    import chldren1 from './children/index'
    import Navgation from '@/components/Navigation'
    export default {
        data(){
            return{
                msg:1
            }
        },
        methods: {
            fn(){
                this.msg+=1
            }
        },
        components:{
            Navgation,
            chldren1
        }
        
    }
    </script>
    <style lang="less" scoped>
        .test{
            font-size: 16px;
        }
    </style>
    

    子组件的第一种方法:
    子组件的第一种方法分析:子组件使用关键属性有
    必须接一个对象,这什么类型是和父组件传过来的值的类型有关的
    在model中定义propevent属性,它们分别是传过来的值和触发父组件的事件
    但我们不需要再父组件中定义触发的事件

    props:{
    msg:Number //必须接一个对象,这什么类型是和父组件传过来的值的类型有关的
    },
     model:{
            prop:"msg",
            event:"fn2"
        },
    
    
    <template>
        <div>
            <div><span>组件的值:</span>{{msg}}</div>
            <button @click="fn1">子组件主动要求改变</button>
        </div>
    </template>
    <script>
    export default {
        props:{
            msg:Number
        },
        model:{
            prop:"msg",
            event:"fn2"
        },
        
        methods: {
            fn1(){
                this.$emit('fn2',this.msg+1)
            }
        },
    }
    </script>
    

    子组件的第二种方法:
    这里必须使用value
    this.$emit('input',this.value+1)中一定使用'input'

     value:{
                default:''
            }
    
    
    ..................
     fn1(){
                // this.$emit('fn2',this.msg+1)
                this.$emit('input',this.value+1)
            }
       
    
    <template>
        <div>
            <!-- <div><span>组件的值:</span>{{msg}}</div> -->
            <div><span>组件的值:</span>{{value}}</div>
            <button @click="fn1">子组件主动要求改变</button>
        </div>
    </template>
    <script>
    export default {
        props:{
            // msg:Number
            value:{
                default:''
            }
        },
        // model:{
        //     prop:"msg",
        //     event:"fn2"
        // },
        
        methods: {
            fn1(){
                // this.$emit('fn2',this.msg+1)
                this.$emit('input',this.value+1)
            }
        },
    }
    </script>
    

    相关文章

      网友评论

          本文标题:vue父子组件的双向绑定

          本文链接:https://www.haomeiwen.com/subject/sqmlwctx.html