父组件向子组件传值和子组件向父组件传值

一、父组件向传值子组件

<组件 v-bind:属性=“值”></组件>

父组件传给子组件的值不能改,因为数据流是单向的 父 --> 子

绑定可以传递各种数据类型和解析变量的值,不绑定传过去的就是字符串

子组件接收:两种方式:

  1. props["n"];

  2. 子组件对接收数据进行验证:

props:{
    属性:{
        type:类型,
        default:20, //默认值
        required:true, //必须传true或者false
        validator(v){
            return v>20 //布尔表达式,可以写正则
        }, //自定义验证规则
    }
}

例子

<div class="box">
        <child v-bind:a="n"></child>
    </div>
    <script>
        var child = {
            props:{
                a:{
                    type:Number,
                    default:20,
                    required:true,
                    validator(v){
                        return v < 100
                    }
                }
            },
            data(){
                return {
                        b : this.a
                    }
            },
            template:`<div>
                <span>{{b}}</span>
                <button @click="add">++</button>
            </div>`,
            methods:{
                add(){
                    return this.b++
                }
            }
        }
        new Vue({
            el:".box",
            data:{
                n : 1
            },
            components:{
                child
            }
        })
    </script>

二、子组件向父组件传值

例子

<div class="box">
    {{str}}
    <com v-on:msg="recevie($event)"></com>  //2.监听 如果是事件对象 $event可以省略    v-on:自定义事件 = "事件处理函数"
</div>
<script>
    var com = {
        template:`<div>child
            <button @click="sendToParent">发送</button>
        </div>`,
        methods:{
            sendToParent(){
                //msg 自定义事件的名称 123为数据
                this.$emit("msg","123") //1.发送
            }
        }
    }
    new Vue({
        el:".box",
        components:{
            com
        },
        data:{
            str:''
        }
        methods:{
            recevie(e){ // 3.接收 在父组件的methods里,实现这个事件处理函数,参数就会携带子组件传来的数据($event)
                this.str = e
            }
        }
    })
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 开发一个React应用,更多的是在编写组件,而React组件最小的单位就是React元素,编写组件的最大的好...
    itclanCoder阅读 1,181评论 0 1
  • Vue的组件化给前端开发带来极大的便利,这种依赖数据来控制Dom的模式,区别于以前的开发控制Dom的开发理念,这也...
    Max_Law阅读 1,149评论 0 3
  • 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装...
    youins阅读 9,534评论 0 13
  • 作为一个合格的开发者,不要只满足于编写了可以运行的代码。而要了解代码背后的工作原理;不要只满足于自己的程序...
    六个周阅读 8,529评论 1 33
  • 萧月的父亲萧正岩在上大教历史,平日沉默寡言,一身中山装笔挺干练,目光炯炯,但金丝眼镜里总是投射出一股文弱。这...
    子轩_99阅读 133评论 0 0