vue 组件:父组件向子组件传值,以及子组件向父组件传值

1.父组件向子组件传值

<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8'>
        <title></title>
        <!-- 引入vue.js -->
        <script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
       
    </head>
    <body>
        <div id="app">
            <!-- 父组件,可以在引用子组件的时候,通过属性绑定(v-bind:)的形式,把需要传递给子组件的数据,一属性绑定 的形式,传递到子组件内部,以供子组件使用 -->
          <my-info v-bind:parentmsg="msg"></my-info>
        </div>
    
        <template id="test">
            <h2  >{{parentmsg}} ----{{name}}</h2>
        </template>

    </body>
    <script>
        var myInfo = {
            template:'#test',
            data(){
                // 子组件的data数据,并不是通过父组件传递过来的,而是子组件自身私有的,比如组组件通过Ajax请求回来的数据,而后放在了data上,以供使用,data上的数据可读可写
                return { name:"123"}
            },
            // props 官方建议 只读,无法重新赋值!
            // 从父组件传递过来的parentmsg属性,需要在props定义后,才可以在子组件中使用
            props:['parentmsg']

        };
      let vm = new Vue({
            el:'#app',
            data:{
                msg:'test msg'
            },
            components:{
                //表示的意思 myInfo:myInfo 支持驼峰命名方法 使用时   <my-info></my-info>,也可以用全部小写将不生效驼峰命名
                myInfo
            }
        })
    </script>
</html>

2.子组件向父组件传值

<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8'>
        <title></title>
        <!-- 引入vue.js -->
        <script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
       
    </head>
    <body>
        <div id="app">
            <!-- 父组件,可以在引用子组件的时候,通过属性绑定(v-on:)的形式,把需要传递给子组件的方法,一属性绑定 的形式,传递到子组件内部,以供子组件使用 -->
          <my-info v-on:test-func="alertInfo"></my-info>
        </div>
    
        <template id="test">
            <div>
              <h2 >{{testmsg}}</h2>
              <input type="button" value="点击调用" v-on:click="useParentFunc" />  
            </div>
        </template>

    </body>
    <script>
        var myInfo = {
            template:'#test',
            data(){
                 return{
                    testmsg:"testmsg !!!"
                 }  
            },
            methods:{
                useParentFunc:function(){
                    //$emit 调用说明 第一个参数 组件定义上定义的v-on:testFunc 的名称,第二个参数以及后面的参数都事回传的data
                    this.$emit('test-func',this.testmsg)
                }
            }

        };
      let vm = new Vue({
            el:'#app',
            data:{
                msg:'test msg'
            },
            methods:{
                alertInfo:function(data){
                    alert('调用了父类的方法,并回传了:'+data)
                }
            },
            components:{
                //表示的意思 myInfo:myInfo 支持驼峰命名方法 使用时   <my-info></my-info>,也可以用全部小写将不生效驼峰命名
                myInfo
            }
        })     
    </script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值