cheetah-framework
Version:
Cheetah Framework JS used in all our applications
51 lines (41 loc) • 949 B
JavaScript
import moment from 'moment'
let intervalTimes = 0
let keyGenerate = 1
const funs = {}
export default {
bind (el, binding, vnode) {
el.innerHTML = moment(binding.value).fromNow()
// only register once
if (!vnode.$momentAgoKey) {
vnode.$momentAgoKey = '' + keyGenerate++
funs[vnode.$momentAgoKey] = () => {
el.innerHTML = moment(binding.value).fromNow()
}
runAutoUpdate()
}
},
update (el, binding) {
el.innerHTML = moment(binding.value).fromNow()
},
unbind (el, binding, vnode) {
stopAutoUpdate(vnode.$momentAgoKey)
}
}
function runAutoUpdate () {
if (intervalTimes !== 0) return // only run once
intervalTimes = setInterval(function () {
for (var key in funs) {
funs[key]()
}
}, 1000)
}
function stopAutoUpdate (key) {
if (!key) {
return
}
delete funs[key]
if (_.isEmpty(funs)) {
clearInterval(intervalTimes)
intervalTimes = 0
}
}