当前位置: 代码迷 >> 综合 >> v-loading
  详细解决方案

v-loading

热度:41   发布时间:2024-02-25 00:32:03.0

一、区域加载

Element 提供了两种调用 Loading 的方法:指令和服务。对于自定义指令v-loading,只需要绑定Boolean即可。默认状况下,Loading 遮罩会插入到绑定元素的子节点,通过添加body修饰符,可以使遮罩插入至 DOM 中的 body 上。

<el-tablev-loading="loading":data="tableData"
>......
</el-table>

二、整页加载

当使用指令方式时,全屏遮罩需要添加fullscreen修饰符(遮罩会插入至 body 上),此时若需要锁定屏幕的滚动,可以使用lock修饰符;当使用服务方式时,遮罩默认即为全屏,无需额外设置。

指令方式:

<el-buttontype="primary"@click="openFullScreen1"v-loading.fullscreen.lock="fullscreenLoading">指令方式
</el-button>

服务方式:

openFullScreen2() {const loading = this.$loading({lock: true,text: 'Loading',spinner: 'el-icon-loading',background: 'rgba(0, 0, 0, 0.7)'});setTimeout(() => {loading.close();}, 2000);
}

通常我们在 axios 拦截器中,使用服务指令来全局添加 loading 信息。

// 新增蒙层
var loading// request拦截器
$http.interceptors.request.use(config => {if (config.loading !== false) {  // 可配置不用蒙层,参考 src/api/base/goods.js 中 getPageQuery 方法。// 新增接口请求时蒙层loading = window.vm.$loading({lock: true,text: 'Loading',spinner: 'el-icon-loading',background: 'rgba(0, 0, 0, 0.7)',})}return config
}, error => {// Do something with request errorconsole.log(error) // for debugPromise.reject(error)
})

三、自定义

在绑定了v-loading指令的元素上添加element-loading-text属性,其值会被渲染为加载文案,并显示在加载图标的下方。类似地,element-loading-spinner和element-loading-background属性分别用来设定图标类名和背景色值。

<el-mainv-loading="loading"element-loading-background="rgba(0, 0, 0, 0.5)"element-loading-text="图标正在加载中"
>......
</el-main>

更多详情,请查看:element-ui 之 loading 组件。

  相关解决方案