当前位置: 首页 > news >正文

Vue项目依赖注入的使用

Vue项目依赖注入


文章目录

  • Vue项目依赖注入
  • 前言
  • 一、本文要实现什么
  • 二、步骤
    • 1.父组件传值
    • 2.子组件接收
    • 此时便可以实现点击添加图片,弹窗出现


前言

官方解释:在这个组件里,所有 组件google-map 的后代都需要访问一个 getMap 方法,以便知道要跟哪个地图进行交互。不幸的是,使用 $parent property 无法很好的扩展到更深层级的嵌套组件上。这也是依赖注入的用武之地,它用到了两个新的实例选项:provide 和 inject。

<google-map><google-map-region v-bind:shape="cityBoundaries"><google-map-markers v-bind:places="iceCreamShops"></google-map-markers></google-map-region>
</google-map>

provide 选项允许我们指定我们想要提供给后代组件的数据/方法。

provide: function () {return {getMap: this.getMap}
}

然后在任何后代组件里,我们都可以使用 inject 选项来接收指定的我们想要添加在这个实例上的 property。

inject: ['getMap']

地址:添加链接描述


一、本文要实现什么

项目的后台有添加图片按钮和功能实现,当点击后台的添加图片按钮时,需展示弹窗,弹窗内显示前台的图片。
由于后台的添加图片按钮较多,为了避免弹出层代码的多次渲染,因此将弹出层写在app.vue文件中,并将值传回组件中。

二、步骤

1.父组件传值

imageModel绑定弹窗事件
confirm点击确定关闭弹窗

 <!-- 消息弹窗的设计,写在其他页面都不利于维护,且会造成渲染多次的情况,因此写在此处 --><el-dialog title="提示" :visible.sync="imageModel" width="30%"><span slot="footer" class="dialog-footer"><el-button @click="dialogVisible = false">取 消</el-button><el-button type="primary" @click="confirm">确 定</el-button></span></el-dialog>
  // 通过依赖注入,把this传递到子组件,并且在其他的子组件中,使用app. 便可以进行调用provide(){return{app:this}},data(){return {imageModel:false}},methods:{show(){this.imageModel=true},confirm(){// 接收选中的图片// 关闭弹窗this.hide()},hide(){this.imageModel=false}

2.子组件接收

接收值

inject: ['app'],

为子组件创建点击事件chooseImage

 <!-- 图片选择 --><span v-else class="btn btn-light border"@click="chooseImage"><i class="el-icon-plus"></i></span>

调用app中的方法

    methods: {// 选择图片chooseImage(){this.app.show();  }}

此时便可以实现点击添加图片,弹窗出现

http://www.dtcms.com/a/149349.html

相关文章:

  • 深度学习模型搭建的基础原理详细介绍
  • C++学习笔记(三十六)——STL之排序算法
  • Java中内部类
  • 电脑硬盘丢失怎么找回?解决硬盘数据恢复的2种方法
  • win10中打开python的交互模式
  • c++STL——stack、queue、priority_queue的模拟实现
  • 【Linux】46.网络基础(3.3)
  • linux下使用wireshark捕捉snmp报文
  • GAEA的技术优势:分层加密与去中心化数据治理
  • 若依SpringCloud项目-定制微服务模块
  • macOS安全隐私最佳实践分析
  • Mujoco xml < sensor>
  • SEO长尾关键词优化核心策略
  • 【Vue】状态管理(Vuex、Pinia)
  • 深度学习训练中的显存溢出问题分析与优化:以UNet图像去噪为例
  • yaml里的挪威问题是啥
  • day3 打卡训练营
  • 编程思想之分片
  • JavaScript 笔记 --- part 5 --- Web API (part 3)
  • 力扣hot100 LeetCode 热题 100 Java 哈希篇
  • CFD技术如何实现污水处理曝气池的设计优化和节能降碳?
  • vue中将elementUI和echarts转成pdf文件
  • LLM 论文精读(二)Training Compute-Optimal Large Language Models
  • 图像挖掘课程笔记-第一章:了解机器视觉
  • [大模型]什么是function calling?
  • IOT项目——双轴追光系统
  • 第六篇:linux之解压缩、软件管理
  • RS232借助 Profinet网关与调制解调器碰撞出的火花
  • AI 硬件定制:开启智能新时代的钥匙
  • Vue3 异步组件详解:从原理到实战的保姆级指南