Vue中directives的用法

关于 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>

vue中directives的用法相关推荐

  1. vue中定时器一般用法,定时器函数传参以及清除定时器

    一.vue中定时器一般用法(举个例子) 显示当前时间, setInterval()方法会每秒执行一次函数,类似手表功能: <template><div class="use ...

  2. vue中watch的用法

    在vue中,使用watch来响应数据的变化.watch的用法大致有三种.下面代码是watch的一种简单的用法: <input type="text" v-model=&quo ...

  3. vue中this.init用法_Vue中的this.$options.data()和this.$data用法说明

    问题 项目里遇到一个问题,用this.$options.data()重置组件data时,data()里用this获取的props或method都为undefined,代码简化如下: export de ...

  4. vue中props的用法

    vue使用props的用法 日常编程中都会用到父组件用子组件.子用父的情况,下面先介绍一种子传父的情况 1.在父组件中 (1).首先是在其定义一个list属性以存储其数据值 (2).定义一个绑定属性& ...

  5. vue中@oninput的用法

    .vue文件其实是一个组件,今天这篇文章要讲的是.vue文件中监听input的输入值变化事件.需求是这页面中,改变input的值,就调用一个事件,第一想到的是oninput. oninput 事件在用 ...

  6. vue中$root的用法

    vue中$root是用来访问根组件的,用法: this.$root.根组件属性 代码: main.js: new Vue({data(){return{isUpdate:true //根组件属性}}, ...

  7. vue 中provide的用法_聊聊Vue中provide/inject的应用详解

    众所周知,在组件式开发中,最大的痛点就在于组件之间的通信.在 Vue 中,Vue 提供了各种各样的组件通信方式,从基础的 props/$emit 到用于兄弟组件通信的 EventBus,再到用于全局数 ...

  8. Vue中 $ref 的用法

    ref 被用来给DOM元素或子组件注册引用信息.引用信息会根据父组件的 $refs 对象进行注册.如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例 注意:只要想 ...

  9. vue中$bus的用法及$emit、$on、$off的使用

    vue中 $bus 一般与 $emit. $on. $off 连用,一般用在任意组件间的通信,即 $bus 用来传递非父子关系的数据. 如两个组件之间传递数据: 子组件1 this.$bus.$emi ...

最新文章

  1. 月英爱耀承(帮别人名字作诗)
  2. 怎样将两个html页面合并,如何把WORD的两个页面合并在一起?
  3. 第八天- linux目录结构详细介绍
  4. 【2018.3.24】模拟赛之一-ssl2545 奇数【水题】
  5. 算法题解:连续子数组的最大和及其下标
  6. golang实现聊天室(一)
  7. 从最大似然到EM算法浅解(转载)
  8. python爬虫加密空间_Python爬虫进阶必备 | XX同城加密分析
  9. vue移动端通过px动态计算图片宽高_vue图片宽高自适应_移动web图片高度自适应的解决方案...
  10. 那些程序员身上共有的属性,这就是他为什么比你进步快的原因!
  11. “每天AI资讯这么多!该看哪些?”推荐一份优质资料清单
  12. BZOJ1076: [SCOI2008]奖励关【状压DP+期望DP】
  13. python调用hive与java调用区别_python 调用hive查询实现类似存储过程
  14. SQLServer数据库备份与还原
  15. 图像识别用python还是matlab_用于图像识别的五大最佳编程语言!
  16. LoadRunner视频教程地址
  17. 如何成为一名数据分析师 | 推荐收藏
  18. 利用Python+Gephi生成刀塔霸业棋子关系图
  19. Windows Terminal+zsh
  20. Eclipse中同时打开多个控制台(Console)

热门文章

  1. 产品经理必知的2020年手机 App 7大原型设计流行趋势
  2. 高鸿业微观经济学第8版笔记和课后答案
  3. 【Gamma】Scrum Meeting 1 与助教谈话
  4. 【DSA_Fall2020】2. Trees (Templates in C)
  5. 组战队,赢iPhone啦!
  6. linux一键安装虚拟机系统
  7. AI TIME 祝清华大学111周年生日快乐!
  8. LDA模型中需要输入的数据格式
  9. 典型相关分析及R应用
  10. 喷墨打印机的使用 hp LaserJet 1010 HB 打印顺序