Vue3.0 的自定义指令

我本人也是新手,所以我之前不知道自定义指令一般是在什么场景下用的。 在这里告诉各位新手朋友,我目前遇到的应用场景是在权限控制按钮、文本框等元素显示,就用上了这个自定义指令。我利用自己的一个案例进行介绍。

1.创建一个在util/directive/permission.ts 文件,代码如下:

点击查看代码

 export default function(app:any){
    app.directive('hasPermission', {
        mounted( el: any, binding: any ) {
            const {value} = binding;
            let permison="article:search,"
            let  flt=permison.split(',').includes(value[0]);
            console.log(flt)
            // const usersPermissions = localStorage.getItem('pid')?.split(',');
            // let f = usersPermissions?.filter((item:any) => {
            //     //some会循环所有元素,如果有一个元素满足则返回true并跳出循环,如果都没有则返回false
            //     return item.indexOf(value) !== -1;
            // });
            // if (!f) {
            //     ///如果不满足则通过dom元素销毁这个按钮
            //     el.parentNode && el.parentNode.removeChild(el);
            // }
            if(!flt){
                el.parentNode && el.parentNode.removeChild(el);
            }
        }
    })
}

2.在man.ts 进行引入,这里的就是做一个全局注册

点击查看代码
import registPermission from './util/directive/permission'

const app =createApp(App)
registPermission(app);

3.使用方式和属性一样,这里的v-hasPermission就是自定义的指令

点击查看代码
` <el-button type="primary"  v-hasPermission="['article:search']"></el-button>`  

这里我用中括号的原因是为了区分那个双冒号和单冒号。

posted @ 2023-09-14 00:23  linxChou  阅读(77)  评论(0编辑  收藏  举报