99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

ElementPlus Loading 加載

2021-09-26 16:28 更新

Loading 加載

加載數(shù)據(jù)時顯示動效。

區(qū)域加載

在表格等容器中加載數(shù)據(jù)時顯示。


Element Plus 提供了兩種調(diào)用 Loading 的方法:指令和服務。對于自定義指令v-loading,只需要綁定Boolean即可。默認狀況下,Loading 遮罩會插入到綁定元素的子節(jié)點,通過添加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>

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

自定義

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


在綁定了v-loading指令的元素上添加?element-loading-text?屬性,其值會被渲染為加載文案,并顯示在加載圖標的下方。類似地,?element-loading-spinner?、?element-loading-background?和?element-loading-svg?屬性分別用來設定圖標類名、背景色值、加載圖標。

<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%;margin-bottom: 10px"
  >
    <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>
  <el-table
    v-loading="loading"
    :element-loading-svg="svg"
    class="custom-loading-svg"
    element-loading-svg-view-box="-10, -10, 50, 50"
    :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: '上海市普陀區(qū)金沙江路 1518 弄',
          },
          {
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀區(qū)金沙江路 1518 弄',
          },
          {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀區(qū)金沙江路 1518 弄',
          },
        ],
        loading: true,
        svg: `
          <path class="path" d="
            M 30 15
            L 28 17
            M 25.61 25.61
            A 15 15, 0, 0, 1, 15 30
            A 15 15, 0, 1, 1, 27.99 7.5
            L 15 15
          " style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/>
        `,
      }
    },
  }
</script>
<style>
  .custom-loading-svg .el-loading-mask > .el-loading-spinner > .circular {
    animation: none;
  }
</style>

element-loading-svg 屬性雖然支持傳入 HTML 片段,但是在網(wǎng)站上動態(tài)渲染任意 HTML 是非常危險的,因為容易導致 XSS 攻擊。請確保 element-loading-svg 的內(nèi)容是可信的,永遠不要將用戶提交的內(nèi)容賦值給 element-loading-svg 屬性。

整頁加載

頁面數(shù)據(jù)加載時顯示。


當使用指令方式時,全屏遮罩需要添加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 還可以以服務的方式調(diào)用。引入 Loading 服務:

import { ElLoading } from 'element-plus'
JS

在需要調(diào)用時:

ElLoading.service(options)
JS

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

let loadingInstance = ElLoading.service(options)
this.$nextTick(() => {
  // 以服務的方式調(diào)用的 Loading 需要異步關(guān)閉
  loadingInstance.close()
})
JS

需要注意的是,以服務的方式調(diào)用的全屏 Loading 是單例的:若在前一個全屏 Loading 關(guān)閉前再次調(diào)用全屏 Loading,并不會創(chuàng)建一個新的 Loading 實例,而是返回現(xiàn)有全屏 Loading 的實例:

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

此時調(diào)用它們中任意一個的 close 方法都能關(guān)閉這個全屏 Loading。

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

Options

參數(shù)說明類型可選值默認值
targetLoading 需要覆蓋的 DOM 節(jié)點??蓚魅胍粋€ DOM 對象或字符串;若傳入字符串,則會將其作為參數(shù)傳入 document.querySelector以獲取到對應 DOM 節(jié)點object/stringdocument.body
body同 v-loading 指令中的 body 修飾符booleanfalse
fullscreen同 v-loading 指令中的 fullscreen 修飾符booleantrue
lock同 v-loading 指令中的 lock 修飾符booleanfalse
text顯示在加載圖標下方的加載文案string
spinner自定義加載圖標類名string
background遮罩背景色string
customClassLoading 的自定義類名string


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號