【Vue+Element UI】关闭指定某一个页面的loading动画

在基于vue-admin-template的项目中,全局loading动画默认开启,导致页面定时请求时每次都显示loading。通过查找代码,定位到'./src/utils/request.js'文件,尝试修改以关闭指定页面的loading,但未能成功,最终选择注释掉全局loading启动代码来禁用全局loading动画。
【Vue+Element UI】关闭指定某一个页面的loading动画

模板:vue-admin-template v4.4.0

问题描述:由于vue-admin默认配置了全局loading,所以页面刷新都会有loading加载动画,具体显示效果如下:

74ec3367fe4abb14386ba544efac370

但实际中需要在某一个页面中定时请求接口、刷新页面数据,在使用setInterval()定时器后,页面在每次请求接口后会出现loading加载动画。故需要关闭该页面的加载动画。

过程:查到的大部分博客的关注点都在于如何开启loading动画的全局设置或局部设置,没有查到关闭loading动画的例子。所以将前端所有文件都检查了一遍,将设置loading的文件锁定在了'./src/utils/request.js'

结果:未能关闭指定单个页面的loading动画,所以关闭了全局的loading动画。request.js代码如下:

let loading        //定义loading变量

function startLoading() {    //使用Element loading-start 方法
  loading = Loading.service({
    lock: true,
    text: '拼命加载中',
    spinner: "el-icon-loading",
    background: 'rgba(0, 0, 0, 0.8)'
  })
}
function endLoading() {    //使用Element loading-close 方法
  loading.close()
}
//那么 showFullScreenLoading() tryHideFullScreenLoading() 要干的事儿就是将同一时刻的请求合并。
//声明一个变量 needLoadingRequestCount,每次调用showFullScreenLoading方法 needLoadingRequestCount + 1。
//调用tryHideFullScreenLoading()方法,needLoadingRequestCount - 1。needLoadingRequestCount为 0 时,结束 loading。
let needLoadingRequestCount = 0
export function showFullScreenLoading() {
  if (needLoadingRequestCount === 0) {
    startLoading()
  }
  needLoadingRequestCount++
}

export function tryHideFullScreenLoading() {
  if (needLoadingRequestCount <= 0) return
  needLoadingRequestCount--
  if (needLoadingRequestCount === 0) {
    endLoading()
  }
}

// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000, // request timeout
})

// request interceptor
service.interceptors.request.use(
  config => {
    // do something before request is sent

    if (store.getters.token) {
      // let each request carry token
      // ['X-Token'] is a custom headers key
      // please modify it according to the actual situation
      config.headers.token = getToken()
      // config.headers.contentType="application/json;charset=utf-8"
    }
    // showFullScreenLoading() //注释掉,即可关闭全局的loading动画。
    return config
  },
  error => {
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)

修改部分为倒数第九行,将showFullScreenLoading()注释掉即可。


the end.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值