vue-keep-scroll-position
Version:
A vue 2.0 directive to keep scroll position for keep-alived components.
32 lines (29 loc) • 1.14 kB
text/coffeescript
( ->
plugin = (Vue) ->
Vue.directive 'keep-scroll-position',
bind: (el) ->
el.addEventListener 'scroll', (event) ->
event.target.setAttribute 'data-vue-keep-scroll-position', event.target.scrollLeft + '-' + event.target.scrollTop
return
return
inserted: (el) ->
targets = el.querySelectorAll '[data-vue-keep-scroll-position]'
if targets.length > 0
for target in targets
pos = target.getAttribute('data-vue-keep-scroll-position').split('-')
target.scrollLeft = pos[0]
target.scrollTop = pos[1]
else
if el.hasAttribute 'data-vue-keep-scroll-position'
pos = el.getAttribute('data-vue-keep-scroll-position').split('-')
el.scrollLeft = pos[0]
el.scrollTop = pos[1]
return
if Vue? then Vue.use plugin
if typeof exports is 'object' and typeof module is 'object'
module.exports = plugin
else if typeof define is 'function' and define.amd
define -> plugin
else if window?
window.VueKeepScrollPosition = plugin
)()