一:写个指令可以调转路由
1.pageLink.js:
export default {
install (Vue) {
// 一个指令定义对象可以提供如下几个钩子函数(bind,inserted,update,componentUpdated,unbind)
Vue.directive('link', {
// 只调用一次,指令第一次绑定到元素时调用,el为指令所绑定的元素,可以用来直接操作 DOM,binding为一个对象,vnode为虚拟dom
bind (el, binding, vnode) {
el.addEventListener('click', function () {
vnode.context.$router.push(binding.value)
}, false)
}
})
}
}
2.new Vue之前安装插件
import pageLink from '@/components/install/pageLink.js' // 安装路由跳转 Vue.use(pageLink)
3.使用方法
<button type="button" v-link="{name: 'myslide'}">跳转到slide</button>
二,移动端中上部分内容固定结构
let resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
Vue.directive('height-to-bottom', {
inserted: function (el, binding) {
let bottom = binding.value && binding.value.bottom || 0
el.handler = function () {
if (document.documentElement.clientHeight - el.getBoundingClientRect().top - bottom > 0) {
el.style.height = document.documentElement.clientHeight - el.getBoundingClientRect().top - bottom + 'px'
}
}
el.handler()
window.addEventListener(resizeEvt, el.handler, false)
},
unbind: function (el, binding) {
if (!el.handler) return
window.removeEventListener(resizeEvt, el.handler, false)
el.handler = null
}
})
浙公网安备 33010602011771号