当前位置: 首页 > 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();  }}

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

相关文章:

  • 深度学习模型搭建的基础原理详细介绍
  • 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 哈希篇
  • 魔都眼|买买买,老铺黄金新店开业被挤爆:有人排队5小时
  • 深观察丨从“不建议将导师挂名为第一作者”说开去
  • 屠呦呦当选美国科学院外籍院士
  • “乐购浦东”消费券明起发放,多个商家同期推出折扣促销活动
  • 临港迎来鸿蒙智行“尚界”整车及电池配套项目,首款车型今秋上市
  • 三大白电巨头去年净利近900亿元:美的持续领跑,格力营收下滑