diff --git a/src/directive/resize/index.js b/src/directive/resize/index.js index 1fca12b..2de02b7 100644 --- a/src/directive/resize/index.js +++ b/src/directive/resize/index.js @@ -1,16 +1,13 @@ -export default { - bind(el, binding, value) { +import resize from './resize' - }, - inserted(el, binding) { - // 将回调函数从参数binding中取出来 - const callback = binding.value - // 监听浏览器的resize事件 - window.addEventListener('resize', () => { - callback(window.inner) - }) - }, - unbind(el, binding, vnode) { - - } +const install = function(Vue) { + Vue.directive('resize', resize) } + +if (window.Vue) { + window.resize = resize + Vue.use(install); // eslint-disable-line +} + +resize.install = install +export default resize diff --git a/src/directive/resize/index.js b/src/directive/resize/index.js index 1fca12b..2de02b7 100644 --- a/src/directive/resize/index.js +++ b/src/directive/resize/index.js @@ -1,16 +1,13 @@ -export default { - bind(el, binding, value) { +import resize from './resize' - }, - inserted(el, binding) { - // 将回调函数从参数binding中取出来 - const callback = binding.value - // 监听浏览器的resize事件 - window.addEventListener('resize', () => { - callback(window.inner) - }) - }, - unbind(el, binding, vnode) { - - } +const install = function(Vue) { + Vue.directive('resize', resize) } + +if (window.Vue) { + window.resize = resize + Vue.use(install); // eslint-disable-line +} + +resize.install = install +export default resize diff --git a/src/directive/resize/resize.js b/src/directive/resize/resize.js index 2de02b7..1dd8507 100644 --- a/src/directive/resize/resize.js +++ b/src/directive/resize/resize.js @@ -1,13 +1,22 @@ -import resize from './resize' +export default { + bind(el, binding, value) { -const install = function(Vue) { - Vue.directive('resize', resize) + }, + inserted(el, binding) { + // 将回调函数从参数binding中取出来 + const callback = binding.value + function documentHandler() { + const bodyHeight = window.innerHeight + const bodyWidth = window.innerWidth + console.log('window resize:', bodyHeight, bodyWidth) + callback(bodyHeight, bodyWidth) + } + el.__vueWindowResize__ = documentHandler + // 监听浏览器的resize事件 + window.addEventListener('resize', documentHandler) + }, + unbind(el, binding, vnode) { + window.removeEventListener('onresize', el.__vueWindowResize__) + delete el.__vueWindowResize__ + } } - -if (window.Vue) { - window.resize = resize - Vue.use(install); // eslint-disable-line -} - -resize.install = install -export default resize diff --git a/src/directive/resize/index.js b/src/directive/resize/index.js index 1fca12b..2de02b7 100644 --- a/src/directive/resize/index.js +++ b/src/directive/resize/index.js @@ -1,16 +1,13 @@ -export default { - bind(el, binding, value) { +import resize from './resize' - }, - inserted(el, binding) { - // 将回调函数从参数binding中取出来 - const callback = binding.value - // 监听浏览器的resize事件 - window.addEventListener('resize', () => { - callback(window.inner) - }) - }, - unbind(el, binding, vnode) { - - } +const install = function(Vue) { + Vue.directive('resize', resize) } + +if (window.Vue) { + window.resize = resize + Vue.use(install); // eslint-disable-line +} + +resize.install = install +export default resize diff --git a/src/directive/resize/resize.js b/src/directive/resize/resize.js index 2de02b7..1dd8507 100644 --- a/src/directive/resize/resize.js +++ b/src/directive/resize/resize.js @@ -1,13 +1,22 @@ -import resize from './resize' +export default { + bind(el, binding, value) { -const install = function(Vue) { - Vue.directive('resize', resize) + }, + inserted(el, binding) { + // 将回调函数从参数binding中取出来 + const callback = binding.value + function documentHandler() { + const bodyHeight = window.innerHeight + const bodyWidth = window.innerWidth + console.log('window resize:', bodyHeight, bodyWidth) + callback(bodyHeight, bodyWidth) + } + el.__vueWindowResize__ = documentHandler + // 监听浏览器的resize事件 + window.addEventListener('resize', documentHandler) + }, + unbind(el, binding, vnode) { + window.removeEventListener('onresize', el.__vueWindowResize__) + delete el.__vueWindowResize__ + } } - -if (window.Vue) { - window.resize = resize - Vue.use(install); // eslint-disable-line -} - -resize.install = install -export default resize diff --git a/src/main.js b/src/main.js index 5ced1e3..579dd51 100644 --- a/src/main.js +++ b/src/main.js @@ -25,6 +25,9 @@ Vue.component('search-area', SearchArea) Vue.component('search-item', SearchItem) +import resize from '@/directive/resize/resize' // resize directive +Vue.directive('resize', resize) + import { hasPermission } from './utils/permission' Vue.prototype.hasPerm = hasPermission