当前位置:首页 » 《关注互联网》 » 正文

vue -封装一个弹出层组件(组件之间的通信)_cola

28 人参与  2022年01月26日 18:14  分类 : 《关注互联网》  评论

点击全文阅读


文章目录

  • 前言
  • 一、Vue组件
  • 二、项目实战
    • 1.引入组件
    • 2.读入数据
  • 总结


前言

哈喽今天再回顾一下vue的组件功能,谈到组件无非就是父组件和子组件之间的传值问题了,我们一起探讨一下吧


提示:以下是本篇文章正文内容,下面案例可供参考

一、Vue组件

vue组件官网

首先组件是可复用的实例,当我们封装好了一个组件后在父组件引入就可以使用了。
所以他们与new Vue 接受相同的选项,例如 data、computed、watch、methods、以及生命周期钩子等。

你可以将组件任意次的使用:
在这里插入图片描述
注意:

  1. 当你点击按钮时,每个组件都会独立的维护他的count。因为你,每用一次组件,就会有一个他的新的实例被创建。
  2. data 必须是一个函数?他为什么是一个函数呢?首先vue组件是用来复用的,且组件之间是引用关系,如果组件中的data不是一个
    函数的话,那么他的子组件的实例就不是一个独立的拷贝,而且他们之间的传值也会受到一定的影响。

二、项目实战

页面中点击按钮弹出新增的组件,双击数据在右边显示,点击保存新增一条数据,数据不能重复。
在这里插入图片描述

1.引入组件

代码如下(示例):

组件之间引入页面中调用就可以使用了,难点在下边我们接着看

export default {
	components: {
	project:() => import ("@/components/project.vue")
}
}

在这里插入图片描述

2.读入数据

代码如下(示例):
点击新增时先通过watch 将
watch: 更多的是「观察」的作用,类似于某些数据的监听回调 ,每当监听的数据变化时都会执行回调进行后续操作;
但我们在数据变化时执行异步或者开销较大的操作时,应该使用watch

watch: {
    PopupShowr() {
      this.visible = this.PopupShowr;
    }

通过调用调用接口显示数据,将获取的值传入到treedata中。
再使用子组件中的@node-click ="Selectsamplecategory"对数据进行点击次数的判断
判断鼠标点击的次数,单次点击次数超过2次不作处理,直接返回,也可以拓展成多击事件

  Selectsamplecategory(data) {
      console.log(data);
      this.treeClickCount++;
      if (this.treeClickCount >= 2) {
        return;
      }
      this.timer = window.setTimeout(() => {
        if (this.treeClickCount == 1) {
          this.treeClickCount = 0;
        } else if (this.treeClickCount > 1) {
          this.treeClickCount = 0;
          if (this.rightList.length == 0) {
            this.rightList.push(data)
          } else {
              this.roleName = data;
          var _this = this;
            this.rightList.forEach((item) => {
               if(_this.rightList.indexOf(_this.roleName) === -1 ){
                  _this.rightList.push(_this.roleName);
               }
            });
          }
        
        }
      }, 300);
    },

经过一系列的判断拿到值后再通过子组件将值传给父组件
在这里插入图片描述

父组件配置新增数据,将子组件传过的值进行遍历再通过调用接口实现新增
在这里插入图片描述
右侧的数据删除:
使用熟悉的splice 数组的前添后删 shift unshift push pop splice 多种用法可特意学习一下

 deletelist(row){
	this.rightList.foreach(item,index){
	if(item == row) {
	this.rightList.splice(index,1)  
		}
	}
}

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了vue的使用,而vue提供了大量能使我们快速便捷地处理数据方法。


点击全文阅读


本文链接:http://zhangshiyu.com/post/33969.html

组件  数据  点击  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1