Vue.js 2.x中事件总线(EvevntBus)及element-ui中全屏loading的使用
事件总线(Event Bus)可以在vue项目的index.js文件中创建,也可以在一个独立的.vue文件中创建。使用时,在各个子组件中引入该组件即可。
项目中的全屏loading较多时,可以在根组件App.vue中添加一个loading,再结合Event Bus,即可在子组件中唤起该loading。
代码如下:
//EventBus.vue
<template>
</template>
<script>
import Vue from "vue";
// 模块类事件总线 vuex的补充, 有些场景下vuex用起来 很复杂
export default new Vue({
name: 'EventBus',
data () {
return {
// code
}
}
})
</script>
//App.vue vue项目根组件
<template>
<!-- 在顶级渲染出口外添加loading及loading文字 -->
<div v-loading="loadingBox" :element-loading-text="loadingName">
<router-view >
</router-view>
</div>
</template>
<script>
import eventScope from "./EventBus"; //引入EventBus
export default {
name: 'AppView',
data: function() {
return {
loadingBox: false,//控制loading显隐
loadingName:""//loading时显示的文字
}
},
mounted: function() {
//组件加载后即开始监控loading
eventScope.$on("loading", (l, name='拼命处理中...')=>{
this.loadingBox = l;
this.loadingName = name
})
},
}
</script>
//child.vue
<template>
<!-- code... -->
</template> <script>
import eventScope from "./EventBus";//引入事件总线(EventBus)
export default {
name: 'detail',
data: function () {
return { }
},
computed: {},
props: { },
methods: {
searchEnterFunc() {
// code..
// 请求前打开loading
eventScope.$emit("loading", true);
api.get(url, {
U_PurchaseNum: this.data.details.DocNum2
}).then(res => {
// code...
// 请求成功后关闭loading
eventScope.$emit("loading", false);
}).catch(err => {
// 请求失败后关闭loading
})
}
},
components: {},
mounted: function () {}
}
</script>
Vue.js 2.x中事件总线(EvevntBus)及element-ui中全屏loading的使用的更多相关文章
- 关于Element UI中页面样式小问题
一,修改组件dialog窗口的大小 二,在我使用upload组件上传一张美女图片时,发现当预览图片时,图片是灰色的,点击一下才会变亮,这种效果使我很不舒服,于是我通过添加下面的一条样式,问题解决了(可 ...
- Element UI 中组件this.$message报错
最近在做毕设的时候,用Element UI中的消息提示message一直报以下的错误: 展示的效果也不好看,没有图标什么的: 但我明明有在main.js引入了element-ui 呀,因为毕设时间很赶 ...
- 关于Element UI中select组件中遇到的问题
问题一:在使用select组件设置多选功能后,窗口抖动问题? 详细描述:在我使用select做多选的功能时出现了窗口抖动的问题,测试的时候发现,在有些人的电脑上抖动,有些人的电脑上不抖,找了很多文档, ...
- vue.js(5)--事件修饰符
vue中的事件修饰符(.stop..prevent..self..capture..once) (1)实例代码 <!DOCTYPE html> <html lang="en ...
- vue.js引用出错-script代码块放在head和body中的区别
这篇随笔是为了记录vue.js引用出错的原因,看到最后原来是vue.js代码放在head中不能正常使用,要最后发现要将其放在body中才行... 原来是js代码放在head和body中的区别问题,占个 ...
- vue.js click点击事件获取当前元素对象
Vue.js可以传递$event对象 <body id="app"> <ul> <li v-on:click="say('hello!', ...
- vue使用自定义指令v-dialogDrag来控制element ui中el-dialog的拖动缩放,拉伸问题
1 在vue的utils中新建一个dialogDrag.js import Vue from 'vue' Vue.directive('dialogDrag', { bind(el, binding, ...
- vue+element ui中select组件选择失效问题原因与解决方法
codejing 2020-07-10 09:13:31 652 收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...
- element ui 中的 resetFields() 报错'resetFields' of undefined
每次做各种form表单时,首先要注意的是初始化,但是刚开始若没有仔细看文档,则会自己写个方法将数据设置为空,但是这样就会出现一个问题,表单内存在各种验证,假如是一个弹框内有form表单,弹框出现就执行 ...
随机推荐
- Intel产品AMT本地及远程提权漏洞(CVE-2017-5689)复现 【转载自freebuf.com】
零.绪论: 1.鸣谢freebuf的文章,主要是学习这个漏洞,文章地址: Intel产品AMT本地及远程提权漏洞(CVE-2017-5689)复现 2.在shadon上找了多个该漏洞尝试复现失败(评论 ...
- 从零打造在线网盘系统之SSH框架整合
欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...
- postgresql架构基础(转)-(1)
PostgreSQL使用一种客户端/服务器的模型.一次PostgreSQL会话由下列相关的进程(程序)组成: 一个服务器进程,它管理数据库文件.接受来自客户端应用与数据库的联接并且代表客户端在数据库上 ...
- poj1821 Fence【队列优化线性DP】
Fence Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 6122 Accepted: 1972 Description ...
- javascript关闭网页的几种方法
js关闭当前页面(窗口)的几种方式总结,需要的朋友可以参考一下: 1. 不带任何提示关闭窗口的js代码 <a href="javascript:window.opener=null;w ...
- matplotlib常见绘图基础代码小结:折线图、散点图、条形图、直方图、饼图
一.折线图 二.散点图 三.条形图 四.直方图 五.饼图 一.折线图折线图用于显示随时间或有序类别的变化趋势 from matplotlib import pyplot as plt x = rang ...
- 101-advanced-React易用性,概述
React完全支持构建可访问的网站,通常使用标准的HTML技术. 1.可访问小部件 ARIA文档包含用于构建完全可访问的JavaScript小部件的技术. JSX完全支持所有aria- * HTML属 ...
- HTML基础之DOM常用操作
DOM(Document Object Model ),文档对象模型,主要用于对HTML和XML文档的内容进行操作. 一.查找节点 直接获取标签 document.getElementById('i1 ...
- CentOS7.5基础优化与常用配置
目录 最小化全新安装CentOS7基础优化 配置yum源 安装常用软件 关闭防火墙 关闭SELinux 优化ulimit 历史命令记录改为1万条 把命令提示符改为绿色 添加vim配置文件 添加一个普通 ...
- PAT 1055 The World's Richest[排序][如何不超时]
1055 The World's Richest(25 分) Forbes magazine publishes every year its list of billionaires based o ...