wangfukang 3 weeks ago
parent
commit
1d8df2331e
  1. 78
      utils/loading.js

78
utils/loading.js

@ -0,0 +1,78 @@
export const LOADING_SHOW_EVENT = 'common-loading:show'
export const LOADING_HIDE_EVENT = 'common-loading:hide'
const defaultOptions = {
title: '加载中...',
mask: true
}
const loadingState = {
visible: false,
title: defaultOptions.title,
mask: defaultOptions.mask
}
let installed = false
let nativeShowLoading = null
let nativeHideLoading = null
function normalizeOptions(options = {}) {
if (typeof options === 'string') {
return {
...defaultOptions,
title: options
}
}
return {
...defaultOptions,
...options,
title: options.title || defaultOptions.title,
mask: options.mask !== false
}
}
export function getLoadingState() {
return {
...loadingState
}
}
export function showLoading(options) {
const loadingOptions = normalizeOptions(options)
loadingState.visible = true
loadingState.title = loadingOptions.title
loadingState.mask = loadingOptions.mask
uni.$emit(LOADING_SHOW_EVENT, loadingOptions)
loadingOptions.success && loadingOptions.success({ errMsg: 'showLoading:ok' })
loadingOptions.complete && loadingOptions.complete({ errMsg: 'showLoading:ok' })
}
export function hideLoading(options = {}) {
loadingState.visible = false
uni.$emit(LOADING_HIDE_EVENT)
nativeHideLoading && nativeHideLoading.call(uni)
options.success && options.success({ errMsg: 'hideLoading:ok' })
options.complete && options.complete({ errMsg: 'hideLoading:ok' })
}
export function installLoading() {
if (installed) {
return
}
installed = true
nativeShowLoading = uni.showLoading
nativeHideLoading = uni.hideLoading
uni.$nativeShowLoading = nativeShowLoading
uni.$nativeHideLoading = nativeHideLoading
uni.showLoading = showLoading
uni.hideLoading = hideLoading
}
export default {
installLoading,
showLoading,
hideLoading,
getLoadingState
}
Loading…
Cancel
Save