先引用了一下官方的说明:
除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令。注意,在 Vue2.0
中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM
元素进行底层操作,这时候就会用到自定义指令。
例如: 注册一个全局自定义指令 v-focus
Vue.directive('focus', {
// 当被绑定的元素插入到 DOM 中时……
inserted: function (el) {
// 聚焦元素
el.focus()
}
})
如果想注册局部指令,组件中也接受一个 directives 的选项:
directives: {
focus: {
// 指令的定义
inserted: function (el) {
el.focus()
}
}
}
然后你可以在模板中任何元素上使用新的 v-focus property,如下:
<input v-focus>
OK,引用完官方的例子,现在教你在vue-cil中使用自定义指令
方法一:
在根目录下创建文件夹directive,在里面定义每一个指令,例如permission:
在permisson.js中
import store from '@/store'
function checkPermission(el, binding) {
const {
value } = binding
const roles = store.getters && store.getters.roles
if (value && value instanceof Array) {
if (value.length > 0) {
const permissionRoles = value
const hasPermission = roles.some(role => {
return permissionRoles.includes(role)
})
if (!hasPermission) {
el.parentNode && el.parentNode.removeChild(el)
}
}
} else {