5.6 KiB
		
	
	
	
	
			
		
		
	
	Loading
Show animation while loading data.
Loading inside a container
Displays animation in a container (such as a table) while loading data.
:::demo Element provides two ways to invoke Loading: directive and service. For the custom directive v-loading, you just need to bind a boolean value to it. By default, the loading mask will append to the element where the directive is used. Adding the body modifier makes the mask append to the body element.
<template>
  <el-table
    v-loading.body="loading"
    :data="tableData"
    style="width: 100%">
    <el-table-column
      prop="date"
      label="Date"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="Name"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="Address">
    </el-table-column>
  </el-table>
</template>
<style>
  body {
    margin: 0;
  }
</style>
<script>
  export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-02',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }, {
          date: '2016-05-04',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }, {
          date: '2016-05-01',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }],
        loading: true
      };
    }
  };
</script>
:::
Loading text
You can customize a text message.
:::demo Add attribute element-loading-text to the element on which v-loading is bound, and its value will be displayed under the spinner.
<template>
  <el-table
    v-loading="loading2"
    element-loading-text="Loading..."
    :data="tableData"
    style="width: 100%">
    <el-table-column
      prop="date"
      label="Date"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="Name"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="Address">
    </el-table-column>
  </el-table>
</template>
<script>
  export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-02',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }, {
          date: '2016-05-04',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }, {
          date: '2016-05-01',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }],
        loading2: true
      };
    }
  };
</script>
:::
Full screen loading
Show a full screen animation while loading data.
:::demo Add the fullscreen modifier to create a full screen mask, and it will append to body. In this case, if you disable scrolling on body, you add another modifier lock.
<template>
  <el-button
    type="primary"
    @click="openFullScreen"
    v-loading.fullscreen.lock="fullscreenLoading">
    Full screen loading for 3 seconds
  </el-button>
</template>
<script>
  export default {
    data() {
      return {
        fullscreenLoading: false
      }
    },
    methods: {
      openFullScreen() {
        this.fullscreenLoading = true;
        setTimeout(() => {
          this.fullscreenLoading = false;
        }, 3000);
      }
    }
  }
</script>
:::
Service
You can also invoke Loading with a service. Import Loading service:
import { Loading } from 'element-ui';
Invoke it:
Loading.service(options);
The parameter options is the configuration of Loading, and its details can be found in the following table. LoadingService returns a Loading instance, and you can close it by invoking its close method:
let loadingInstance = Loading.service(options);
loadingInstance.close();
If Element is imported entirely, a globally method $loading will be registered to Vue.prototype. You can invoke it like this: this.$loading(options), and it also returns a Loading instance.
Options
| Attribute | Description | Type | Accepted Values | Default | 
|---|---|---|---|---|
| target | the DOM node Loading needs to cover. Accepts a DOM object or a string. If it's a string, it will be passed to document.querySelectorto get the corresponding DOM node | object/string | — | document.body | 
| body | same as the bodymodifier ofv-loading | boolean | — | false | 
| fullscreen | same as the fullscreenmodifier ofv-loading | boolean | — | true | 
| lock | same as the lockmodifier ofv-loading | boolean | — | false | 
| text | loading text that displays under the spinner | string | — | — | 
| customClass | custom class name for Loading | string | — | — |