123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import Vue from 'vue'
- import pageLoading from './loading.vue'
- const Mask = Vue.extend(pageLoading)
- const toggleLoading = (el, binding) => {
- // el拿到loading挂载的元素,binding.value判断是否显示loading
- if (binding.value) {
- Vue.nextTick(() => {
- el.instance.loadingShow = true
- insertDom(el, el, binding)
- })
- } else {
- el.instance.loadingShow = false
- }
- }
- const insertDom = (parent, el) => {
- parent.appendChild(el.mask)
- }
- export default {
- bind: function (el, binding) {
- const mask = new Mask({
- el: document.createElement('div'),
- data () { }
- })
- el.instance = mask
- el.mask = mask.$el
- el.maskStyle = {
- position: 'relation'
- }
- el.style.position = 'relative'
- binding.value && toggleLoading(el, binding)
- },
- update: function (el, binding) {
- if (binding.oldValue !== binding.value) {
- toggleLoading(el, binding)
- }
- },
- unbind: function (el, binding) {
- el.instance && el.instance.$destroy()
- el = null
- }
- }
|