v-loading.fullscreen.lock——Element Loading加載


在表格等容器中加載數據時顯示。

Element 提供了兩種調用 Loading 的方法:指令和服務。

一、指令方式:

1.對於自定義指令v-loading,只需要綁定Boolean即可。默認狀況下,Loading 遮罩會插入到綁定元素的子節點,通過添加body修飾符,可以使遮罩插入至 DOM 中的 body 上。

<template>
  <el-table
    v-loading="loading"
    :data="tableData"
    style="width: 100%">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>
  </el-table>
</template>

<style>
  body {
    margin: 0;
  }
</style>

<script>
  export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }, {
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }],
        loading: true
      };
    }
  };
</script>

2.自定義:可自定義加載文案、圖標和背景色。

 
在綁定了 v-loading指令的元素上添加 element-loading-text屬性,其值會被渲染為加載文案,並顯示在加載圖標的下方。類似地, element-loading-spinnerelement-loading-background屬性分別用來設定圖標類名和背景色值。
<template>
  <el-table
    v-loading="loading"
    element-loading-text="拼命加載中"
    element-loading-spinner="el-icon-loading"
    element-loading-background="rgba(0, 0, 0, 0.8)"
    :data="tableData"
    style="width: 100%">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>
  </el-table>
</template>

<script>
  export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }, {
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }],
        loading: true
      };
    }
  };
</script>

3.整頁加載

頁面數據加載時顯示。

當使用指令方式時,全屏遮罩需要添加fullscreen修飾符(遮罩會插入至 body 上),此時若需要鎖定屏幕的滾動,可以使用lock修飾符;當使用服務方式時,遮罩默認即為全屏,無需額外設置。

<template>
  <el-button
    type="primary"
    @click="openFullScreen1"
    v-loading.fullscreen.lock="fullscreenLoading">
    指令方式
  </el-button>
  <el-button
    type="primary"
    @click="openFullScreen2">
    服務方式
  </el-button>
</template>

<script>
  export default {
    data() {
      return {
        fullscreenLoading: false
      }
    },
    methods: {
      openFullScreen1() {
        this.fullscreenLoading = true;
        setTimeout(() => {
          this.fullscreenLoading = false;
        }, 2000);
      },
      openFullScreen2() {
        const loading = this.$loading({
          lock: true,
          text: 'Loading',
          spinner: 'el-icon-loading',
          background: 'rgba(0, 0, 0, 0.7)'
        });
        setTimeout(() => {
          loading.close();
        }, 2000);
      }
    }
  }
</script>

二、服務

Loading 還可以以服務的方式調用。引入 Loading 服務:

import { Loading } from 'element-ui';

在需要調用時:

Loading.service(options);

其中 options 參數為 Loading 的配置項,具體見下表。LoadingService 會返回一個 Loading 實例,可通過調用該實例的 close 方法來關閉它:

let loadingInstance = Loading.service(options);
this.$nextTick(() => { // 以服務的方式調用的 Loading 需要異步關閉
  loadingInstance.close();
});

需要注意的是,以服務的方式調用的全屏 Loading 是單例的:若在前一個全屏 Loading 關閉前再次調用全屏 Loading,並不會創建一個新的 Loading 實例,而是返回現有全屏 Loading 的實例:

let loadingInstance1 = Loading.service({ fullscreen: true });
let loadingInstance2 = Loading.service({ fullscreen: true });
console.log(loadingInstance1 === loadingInstance2); // true

此時調用它們中任意一個的 close 方法都能關閉這個全屏 Loading。

如果完整引入了 Element,那么 Vue.prototype 上會有一個全局方法 $loading,它的調用方式為:this.$loading(options),同樣會返回一個 Loading 實例。

Options

參數 說明 類型 可選值 默認值
target Loading 需要覆蓋的 DOM 節點。可傳入一個 DOM 對象或字符串;若傳入字符串,則會將其作為參數傳入 document.querySelector以獲取到對應 DOM 節點 object/string document.body
body 同 v-loading 指令中的 body 修飾符 boolean false
fullscreen 同 v-loading 指令中的 fullscreen 修飾符 boolean true
lock 同 v-loading 指令中的 lock 修飾符 boolean false
text 顯示在加載圖標下方的加載文案 string
spinner 自定義加載圖標類名 string
background 遮罩背景色 string
customClass Loading 的自定義類名 string


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM