您的位置:首页 > 新闻 > 会展 > 西安建站系统_网络销售有哪些_今日热点新闻2022_网址最新连接查询

西安建站系统_网络销售有哪些_今日热点新闻2022_网址最新连接查询

2024/12/23 6:55:00 来源:https://blog.csdn.net/mantou_riji/article/details/144082606  浏览:    关键词:西安建站系统_网络销售有哪些_今日热点新闻2022_网址最新连接查询
西安建站系统_网络销售有哪些_今日热点新闻2022_网址最新连接查询

文章目录

  • 1. 创建指令文件
  • 2. 全局注册
  • 3. 使用

1. 创建指令文件

src/directives
在directives中创建如下文件

src│─directives│  index.ts└─loadingindex.tsindex.vue
  • directives/ index.ts
export * from './loading'
  • directives/loading/index.ts
import { createApp } from 'vue'
import type { Directive } from 'vue'
import Loading from './index.vue'
// 注册组件
export const loading: Directive = {mounted(el, binding) {const app = createApp(Loading)const instance = app.mount(document.createElement('div'))el.instance = instanceif (binding.value) {appendEl(el)}},updated(el, binding) {if (binding.value !== binding.oldValue) {binding.value ? appendEl(el) : removeEl(el)}}
}
// 插入元素
const appendEl = (el: any) => {// 给父元素加个定位,让loading元素定位el.style.position = 'relative'el?.appendChild(el.instance.$el)
}
// 移除元素
const removeEl = (el: any) => {el.style.position = ''const $el = el.instance.$elif (el?.contains($el)) {el?.removeChild($el)}
}
  • directives/loading/index.vue
<template><div class="loading-box"><Spin tip="Loading" /></div>
</template><script lang="ts" setup>
import {Spin} from "ant-design-vue";
</script><style scoped lang="less">
.loading-box {width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;background: rgba(255,255,255,0.2);position: absolute;top: 0;left: 0;:deep(.ant-spin-dot-item) {background-color:#f55345;}:deep(.ant-spin.ant-spin-show-text .ant-spin-text) {color: #f55345;}
}
</style>

2. 全局注册

src/main.ts

import './assets/style/main.less'
import { createApp, type Directive } from 'vue'
import App from './App.vue'
import * as directives from './directives'const app = createApp(App)
// 循环注册指令
Object.keys(directives).forEach(key => {app.directive(key, (directives as { [key: string]: Directive })[key])
})
app.mount('#app')

3. 使用

注册成功之后就可以在全局范围内使用了

<div v-loadin="true"></div>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com