关于 vue 中 directives 的用法问题,详细可以参考vue官方对directives的解释

当前文章主要讲述directives怎么用,directives做权限按钮的功能

###1. directives 怎么用###
不错的示例,可以参考下,点击访问

directives 在生命周期内用

export default {
data() {
return {
};
},
directives:{
'local-test':function(el,binding,vnode){
/** el可以获取当前dom节点,并且进行编译,也可以操作事件 **/
/** binding指的是一个对象,一般不用 **/
/** vnode 是 Vue 编译生成的虚拟节点 **/
el.style.border="1px solid red"; //操作style所有样式
console.log(el.value); //获取v-model的值
console.log(el.dataset.name) //data-name绑定的值,需要el.dataset来获取
console.log(vnode.context.$route); //获取当前路由信息
}
},
components:{
},
filters:{
},
watch:{
}
}

###2. directives 做权限按钮的功能###
directives 在全局main.js中注册

路由配置:

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}

/*然后在main.js文件引入文件*/
import has from './public/js/btnPermissions.js';

/*页面中按钮只需加v-has即可*/
<el-button @click='editClick' type="primary" v-has>编辑</el-button>

最新文章

  1. 用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点]
  2. Redux教程2:链接React
  3. [转]细说Redis监控和告警
  4. 使用Installutil安装系统服务方法
  5. 网站开发技巧, 使用byte[]持久化用户个性设置
  6. js对select动态添加和删除OPTION
  7. Java 高效检查一个数组中是否包含某个值
  8. 【adb】连接BlueStacks
  9. 【Objective-C学习笔记】变量和基本的数据类型
  10. Balanced Number HDU - 3709
  11. kafka扫盲笔记,实战入门
  12. 【golang-GUI开发】QSS的使用(一)———QSS入门指南
  13. yml 后面的配置覆盖前面的
  14. hello world讲解1
  15. Python Web框架 bottle flask
  16. Oracle Time Model Statistics(时间模型统计)
  17. poj2406 Power Strings 【KMP】
  18. beyondCompare试用期到期解决办法
  19. sass &amp; compass 实战录
  20. centos6.5下安装zip格式的tomcat7和tomcat8,并同时运行

热门文章

  1. [Luogu 3398] 仓鼠找sugar
  2. centos无法通过ssh连接的解决
  3. 悲催的IE6 七宗罪大吐槽(带解决方法)第三部分
  4. 简单理解 NP, P, NP-complete和NP-Hard
  5. java学习第01天(搭建环境配置)
  6. TCP/IP 网络编程的理解
  7. APScheduler API -- apscheduler.triggers.cron
  8. 查看 CUDA cudnn 版本
  9. 20165230 2017-2018-2 《Java程序设计》第5周学习总结
  10. Java Dom对XML的解析和修改操作