directives 可以全局使用以及组件内部定义使用
- directives是什么?
注册自定义的指令 - directives有什么作用?
对普通 DOM 元素进行底层操作,就会用到自定义指令 - directives怎么使用?
.vue页面的使用
<template>
<div>
<button v-btn="txt" :data-msg="imgurl">{{ btntext }}</button>
</div>
</template>
<script>
export default {
data() {
return {
btntext: "测试",
txt: "123",
imgurl: "imgurl",
};
},
}
</script>
Vue.directive('btn',{
bind:function(el, binding, vnode)=>{}
insert:function(el,binding,vnode){
el.style.cssText="color:red;" ==> 字体变为红色
}
})
directives 做权限按钮的功能
path: '/permission',
component: Layout,
name: '权限测试',
meta: { btnPermissions: ['admin','supper','normal'] },
children: [
{
path: 'supper',
component: _import('system/supper'),
name: '权限测试页',
meta: { btnPermissions: ['admin','supper'] }
},
{
path: 'normal',
component: _import('system/normal'),
name: '权限测试页',
meta: { btnPermissions: ['admin'] }
}
]
import Vue from 'vue'
const has = Vue.directive('has', {
bind: function (el, binding, vnode) {
let btnPermissions = vnode.context.$route.meta.btnPermissions.split(",");
if (!Vue.prototype.$_has(btnPermissions)) {
el.parentNode.removeChild(el);
}
}
});
Vue.prototype.$_has = function (value) {
let isExist = false;
let btnPermissionsStr = sessionStorage.getItem("btnPermissions");
if (btnPermissionsStr == undefined || btnPermissionsStr == null) {
return false;
}
if (value.indexOf(btnPermissionsStr) > -1) {
isExist = true;
}
return isExist;
};
export {has}
import has from './public/js/btnPermissions.js';
<el-button @click='editClick' type="primary" v-has>编辑</el-button>