vue自定义指令通过data-*进行数据传递

Posted 吴吴吴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue自定义指令通过data-*进行数据传递相关的知识,希望对你有一定的参考价值。

最近有个项目需要用指令来实现按钮权限,故利用vue的自定义指令来完成此功能。
在使用指令的时候遇到个问题需要把指令里面的值传递到外层组件,查阅官方文档发现推荐使用dataset来进行数据传递,故利用下面方法实现数据传递。
  1. 在对应元素上自定义属性
<Row
                 class-name="add-group"
                    :gutter="24"
                    type="flex"
                    justify="start"
                    data-test="true"
                    v-permission="[\'添加分组\']"
                >
                    <Col span="17">
                        <Input
                            maxlength="20"
                            placeholder="请输入分组名称"
                            v-model="groupName"
                        ></Input>
                    </Col>
                    <Col span="7" class="add_btn">
                        <Button
                            type="primary"
                            :loading="loadingBtn"
                            @click="addGroup"
                            >添加分组</Button
                        >
                    </Col>
                </Row>

2.在自定义指令中改变dataset所自定义属性的值

 if (widgets) {
        var sWidget = widgets.filter((w) => {
            return (w.name === binging) && (w.authorised);
        });

        if (sWidget.length === 0) {
            el.parentNode && el.parentNode.removeChild(el);
            el.dataset.test = false;
        } else {
            el.dataset.test = true;
        }
    }

3.在父集页面中使用更新后的值

   e.contextmenu = $(\'.add-group\').data(\'test\');

通过以上3步就可以实现执行完自定义指令中的相关逻辑后更新值来触发父集页面的相关操作。

以上是关于vue自定义指令通过data-*进行数据传递的主要内容,如果未能解决你的问题,请参考以下文章

Vue2:自定义指令,如 v-if

Vue 组件之间传参!

vue 中自定义指令改变data中的值

vue3自定义指令详解

Vue_(组件)自定义指令

表单修饰符自定义指令计算属性侦听器过滤器生命周期