@prettyy/ui
Version:
vue2 UI
29 lines (28 loc) • 838 B
JavaScript
/**
* 实例离开事件后绑定,确保在任何浏览器中都会调用after-leave
*
* @param {Vue} instance 实例.
* @param {Function} callback 实例离开后的回调
* @param {Number} speed 动画事件
* @param {Boolean} once 限制回调函数调用一次
*/
export default function (instance, callback, speed = 300, once = false) {
if (!instance || !callback)
throw new Error("instance & callback is required")
let called = false
const afterLeaveCallback = function () {
if (called) return
called = true
if (callback) {
callback.apply(null, arguments)
}
}
if (once) {
instance.$once("after-leave", afterLeaveCallback)
} else {
instance.$on("after-leave", afterLeaveCallback)
}
setTimeout(() => {
afterLeaveCallback()
}, speed + 100)
}