Loading 加载
加载数据时显示动效。
区域加载
在容器(例如表格)中加载数据时显示动效。
Element Plus 提供了两种调用 Loading 的方法:指令和服务。 对于自定义指令 `v-loading`,您只需要将 `boolean` 值绑定到它。 默认情况下,加载遮罩将附加到使用指令的元素。 添加 `body` 修饰符会使遮罩附加到 body 元素。
自定义
您可以自定义加载文本、加载图标和背景颜色。
在绑定了 `v-loading` 的元素上添加 `element-loading-text` 属性,其值将显示在加载图标下方。 类似地,`element-loading-spinner / element-loading-svg` 和 `element-loading-background` 属性分别用于设置 svg 图标、背景颜色值和加载图标。
警告
虽然 `element-loading-spinner / element-loading-svg` 属性支持传入 HTML 片段,但在网站上动态渲染任意 HTML 是非常危险的,因为它很容易导致 XSS 攻击。 请确保 `element-loading-spinner / element-loading-svg` 的内容是可信的。 **永远不要** 将用户提交的内容分配给 `element-loading-spinner / element-loading-svg` 属性。
整页加载
加载数据时显示全屏动画。
当作为指令使用时,全屏 Loading 需要 `fullscreen` 修饰符,它将被附加到 body 上。 在这种情况下,如果您希望禁用 body 上的滚动,可以添加另一个修饰符 `lock`。 当作为服务使用时,Loading 默认是全屏的。
服务
您也可以通过服务的方式调用 Loading。 引入 Loading 服务
import { ElLoading } from 'element-plus'
调用它
ElLoading.service(options)
参数 `options` 是 Loading 的配置,其详细信息可以在下表中找到。 `LoadingService` 返回一个 Loading 实例,您可以通过调用它的 `close` 方法来关闭它。
const loadingInstance = ElLoading.service(options)
nextTick(() => {
// Loading should be closed asynchronously
loadingInstance.close()
})
请注意,在这种情况下,全屏 Loading 是单例的。 如果在现有全屏 Loading 关闭之前调用了新的全屏 Loading,则会返回现有的全屏 Loading 实例,而不是实际创建另一个 Loading 实例。
const loadingInstance1 = ElLoading.service({ fullscreen: true })
const loadingInstance2 = ElLoading.service({ fullscreen: true })
console.log(loadingInstance1 === loadingInstance2) // true
在任意一个实例上调用 `close` 方法都可以关闭这个全屏 Loading。
如果 Element Plus 是完整导入的,`app.config.globalProperties` 上会注册一个全局方法 `$loading`。 你可以像这样调用它:`this.$loading(options)`,它也会返回一个 Loading 实例。
应用上下文继承 2.9.10
现在 loading 接受一个 `context` 作为 loading 构造函数的第二个参数,它允许您将当前应用程序的上下文注入到 loading 中,从而允许您继承应用程序的所有属性。
您可以像这样使用它
提示
如果您全局注册了 ElLoading 组件,它将自动继承您的应用程序上下文。
import { getCurrentInstance } from 'vue'
import { ElLoading } from 'element-plus'
// in your setup method
const { appContext } = getCurrentInstance()!
ElLoading.service({}, appContext)
API
配置项
名称 | 描述 | 类型 | 默认值 |
---|---|---|---|
target | Loading 需要覆盖的 DOM 节点。 接受一个 DOM 对象或一个字符串。 如果是字符串,它将被传递给 `document.querySelector` 以获取相应的 DOM 节点 | string / HTMLElement | document.body |
body | 与 `v-loading` 的 `body` 修饰符相同 | boolean | false |
fullscreen | 与 `v-loading` 的 `fullscreen` 修饰符相同 | boolean | true |
lock | 与 `v-loading` 的 `lock` 修饰符相同 | boolean | false |
文本 | 显示在加载图标下方的加载文本 | string | — |
spinner | 自定义加载图标的类名 | string | — |
background | 遮罩的背景颜色 | string | — |
customClass | loading 的自定义类名 | string | — |
svg | 自定义 SVG 元素以覆盖默认的加载图标 | string | — |
svgViewBox | 为加载 svg 元素设置 viewBox 属性 | string | — |
beforeClose 2.7.8 | 在 loading 尝试关闭前执行的函数。如果此函数返回 false,则关闭过程将被中止。否则,loading 将会关闭。 | Function | — |
closed 2.7.8 | 在 loading 完全关闭后触发的函数 | Function | — |
指令
名称 | 描述 | 类型 |
---|---|---|
v-loading | 加载数据时显示动画 | boolean / LoadingOptions |
element-loading-text | 显示在加载图标下方的加载文本 | string |
element-loading-spinner | 自定义加载图标 | string |
element-loading-svg | 自定义加载图标(与 element-loading-spinner 相同) | string |
element-loading-svg-view-box | 为加载 svg 元素设置 viewBox 属性 | string |
element-loading-background | 遮罩的背景颜色 | string |
element-loading-custom-class | loading 的自定义类名 | string |