生活小妙招之VUE父子组件数据数据传递

我们接下来要做的是选择一个菜单分类,为这个分类新增一个属性分组,并在这个属性分组下面新增属性
在这里插入图片描述

搭建成上述页面倒不困难,困难的是点击左边菜单三级分类组件的时候会在右边的属性分组组件有所感知。要达到这个效果就涉及到了父子组件交互的用法了。

由于我们是在属性分组组件中导入的菜单三级分类组件,因此我们想实现的是子组件给父组件传递数据,这里使用的是VUE的事件机制。通过子组件给父组件发送一个事件,并携带上数据,这样父组件在感知到后就可以执行下一步操作了。它类似我们的div冒泡机制,小div的行为可以冒泡给打div。可以通过类比来理解。

如何实现父子组件传递数据?

  1. 我们要做什么?在点击了某一菜单后,需要将其告诉父组件。为此我们需要为el-tree绑定单击事件,ElementUI给我们提供了node-click回调事件,在我们点击任意树形控件的节点时触发,我们只需要在该类型的回调事件中编写回调处理函数即可

    node-click节点被点击时的回调共三个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身。
    @node-click="nodeClick"
    

    编写nodeClick回调函数:

        nodeClick(data,node,component){
            console.log("触发点击节点事件:",data,node,component);
        }
    
  2. 在子组件的回调函数中发送事件,让父组件可以接收到:

        nodeClick(data,node,component){
            console.log("触发点击节点事件:",data,node,component);
            //向父组件发送事件
            //$emit中第一个参数为事件名称,后面可以传任意多个参数
            this.$emit("tree-node-click",data,node,component);
        }
    
  3. 父组件去接收事件。上一步骤其实是你在子组件中创建了一种事件类型,名字叫做:tree-node-click。这相当于我们在组建中定义了一种事件类型,就类似点击事件click一样,只不过这种自定义事件类型是在子组件发送事件的时候触发,发送什么类型的事件呢?那就是发送点击树形节点的事件(node-click)时会触发

    //<Category></Category>就是我们引入的子组件
    //import Category from "../common/category.vue";
    //components: { Category},
    <Category @tree-node-click="receiveNodeClick"></Category>
    

    我们使用了tree-node-click类型事件,当点击菜单节点的时候会触发事件,是子组件发出的事件。我们编写receiveNodeClick函数进行回调处理。

        receiveNodeClick(data,node,component) {
          console.log("事件接收:",data,node,component);
        },
    

    我们子组件在发送事件的时候接收的什么参数,父组件在接收事件的时候就可以接收同样的参数。我们可以打印出来便于观察。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值