我正在开发一个具有不同许可类型的应用程序,根据许可证,我们需要禁用/启用输入.

一种方法是 for each 输入输入一个条件:disabled,但这需要大量工作,而且容易出错,因为我们可能会忘记在某些输入上输入它.

我曾想过使用一个像v-disable-all这样的指令来搜索容器下的所有输入,并向其中添加disabled.

我在想,是有更好的解决方案,还是已经有这样的解决方案?

推荐答案

我最终制定了这个指令:

import Vue from "vue";

Vue.directive("disable-all", {
  // When all the children of the parent component have been updated
  componentUpdated: function(el, binding) {
    if (!binding.value) return;
    const tags = ["input", "button", "textarea", "select"];
    tags.forEach(tagName => {
      const nodes = el.getElementsByTagName(tagName);
      for (let i = 0; i < nodes.length; i++) {
        nodes[i].disabled = true;
        nodes[i].tabIndex = -1;
      }
    });
  }
});

Vue.js相关问答推荐

在VITE-VUE APP-DEV模式上重定向HTTP请求

使用V-TOOLTIP(实例化)使工具提示在V-文本字段中显示清晰的图标

如何使用composition api v-model Select 框获取其他JSON 值?

VueI18n 无法读取或更改组合 API 中的区域设置

将 v-calendar 与以时间和日期格式出现的事件一起使用

Vue 脚本标签中更漂亮的 destruct 功能

在组件之间共享 websocket 连接

在 vuejs 中显示两个组件,但只显示一个,为什么?

在 Vue.js 中动态挂载单个文件组件

如何使用 Vue 命名插槽呈现静态内容列表?

作用域slots和 IE11 的问题

如何在 vue.js 中删除类

Laravel Vue - 如何让 vue 在公共文件夹中查找图像

Vue3在'vue-router'中找不到导出'createWebHistory,createRouter'

PhpStorm 中Expected预期表达式

Vuetify / Offline离线图标

Vue路由保持活动和挂载行为

动态注册本地 Vue.js 组件

异步方法不等待函数

在 vue.js 组件中react this.props.children