动态更改 Angular 指令元素属性

2023-12-26

我正在尝试创建一个自定义指令来扩展现有元素的功能。我想检测某个属性是否存在,如果不存在则添加它(例如 ng-class)。

我试图在预编译期间实现这一点,但 Angular 不会对新属性的添加做出反应。

I 创建了一个笨蛋 http://plnkr.co/edit/RIjpy4Un26054S8lLnHs?p=preview有一个使用 ng-hide 的简单示例。

<input hide type="submit" value="Submit"/>




    app.directive('hide', function() {
      return {
        restrict: 'A',
        compile: function(){
             return {
                 pre: function(scope, element, attributes, controller, transcludeFn){
                   attributes.$set("ng-hide", true);
                 },
                 post: function(scope, element, attributes, controller, transcludeFn){

                 }
             }
         },
      };
    });

  

如果我在 html 中添加 ng-hide="true" ,则提交按钮将被正确隐藏。如果我将其留给指令,那么我可以看到 DOM 已正确设置该元素,但该元素并未隐藏:

<input hide="" type="submit" value="Submit" ng-hide="true">

任何帮助表示赞赏!


您可以通过以下方式在链接功能中执行此操作

  • 将指令的优先级设置为高,以便它先于所有其他指令运行。
  • 将其设置为终端,这样其他人就不会追随它。
  • 更改元素后重新编译该元素(例如添加属性)

例如:

app.directive('hide', function($compile) {
  return {
    restrict: 'A',
    priority: 10000,
    terminal: true,
    link: function(scope, element, attrs) {
      attrs.$set('ngHide', true);
      attrs.$set('hide', null);
      $compile(element)(scope);
   }
  };
});

正如可以看到的http://plnkr.co/edit/tHNvCxVn2wURO38UtI0n?p=preview http://plnkr.co/edit/tHNvCxVn2wURO38UtI0n?p=preview

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态更改 Angular 指令元素属性 的相关文章

随机推荐

  • Google Sheets 可安装 onEdit() 触发器无权添加日历事件

    我正在编写附加到 Google 电子表格的脚本 该脚本可以帮助我为员工生成轮班时间表 创建 Google 日历并在人们换班时更新日历 我在电子表格上附加了一个 onEdit 可安装触发器 用于检查用户是否更改了特定范围内的单元格 以交换班次
  • spring-boot:run 和 spring-boot:start 有什么区别

    有什么区别spring boot run and spring boot start 我看到它们都可用Maven 目标 但有什么区别呢 弹簧启动 运行 描述 运行可执行的存档应用程序 弹簧启动 启动 描述 启动一个 Spring 应用程序
  • Knockout获取属性值onClick函数

    具有 attr 值 Qref 的 HTML 视图 这是用于绑定的 HTML 代码 目前我已经硬编码了 Href 属性值
  • Android:文件名包含空格的 ffmpeg

    我想从 Android 应用程序执行 ffmpeg 如下所述 将 FFmpeg 与 Android NDK 结合使用 https stackoverflow com questions 9605757 using ffmpeg with a
  • 核心数据:在索引 x 处获取的对象有一个无序的节名称“xxxxxx”。对象必须按部分名称排序

    我知道我不是第一个问这个问题的人 但我真的很困惑 基本上我有一个带有两个按钮的屏幕 每个按钮根据日期将数据加载到下面的表格视图中 第一次加载第一个表格视图时 默认情况下选择左侧按钮 一切都显示正常 如果我单击右侧按钮并得到一个空白的表格视图
  • 如何从工具提示中删除方形标签并将其信息放在一行中?

    如何从工具提示中删除这个方块 如果我能设法只写一行这样的内容 我会更喜欢 二月 2 var data labels January February March datasets data 1 2 3 var myLineChart new
  • 使用 .save() 传递 url 参数来发布表单数据

    我发布的页面接受 id 电子邮件等参数 我该如何发送 index id 001 email protected cdn cgi l email protection 在backbone js中 model save 您可以将第二个参数中的任
  • 有没有更好的方法来比较字典值

    我目前正在使用以下函数来比较字典值并显示所有不匹配的值 有没有更快或更好的方法来做到这一点 match True for keys in dict1 if dict1 keys dict2 keys match False print ke
  • Tensorflow - h5模型到tflite转换错误

    我使用预训练的 InceptionV3 模型进行了学习迁移 并保存了 h5 模型文件 之后 我就能做出预测 现在 我想使用 TFLiteConverter convert 方法将 h5 模型转换为 tflite 文件 如下所示 conver
  • 无法在 R 上安装包

    当我尝试为 R 安装 Bioconductor 时遇到问题 我到处搜索解决方案 但没有任何东西真正适合我 请问 有什么建议吗 The downloaded binary packages are in var folders 74 y92t
  • 添加任务计划程序

    我正在开发 Apache Cordova 应用程序 我想知道是否可以将任务添加到调度程序设备 我必须在特定时间运行警报和通知 我该怎么做 我考虑过向调度程序设备添加一个任务并委派责任 这个有可能 至少安卓4 4 Thanks 首先 是的 你
  • 如何使用Rubberduck管理本地git存储库

    我在用着橡皮鸭 http rubberduckvba com 版本 2 0 13 与本地 git 存储库结合使用 用于对我的 VBA 项目进行版本控制 目前 每次我使用 Rubberduck 启动时 我都需要重新打开存储库Manage gt
  • SWIG 接口通过函数参数接收 Java 中的不透明结构引用

    我正在尝试使用 SWIG 来使用适用于 Android 的 Spotify API libspotify https developer spotify com technologies libspotify https developer
  • 标记水平 EMA 线(变量)

    这是我使用 atm 的代码 感谢比约恩 米斯蒂安 len1 input 10 minval 1 title Length len2 input 21 minval 1 title Length len3 input 55 minval 1
  • 创建父子数组 PHP

    我有一个平面数组 我试图将其转换为父子数组 Array 0 gt Array parent id gt t3 42yrg7 id gt t1 cze7b2e 1 gt Array parent id gt t3 42yrg7 id gt t
  • 在 React 中自动缩放输入值的宽度

    我想要一个宽度适应其内容的输入 我正在尝试实施这个类似问题的答案 https stackoverflow com a 38867270 5308892 但是使用 React import React useState from react
  • 将 pageToken 与 Google Analytics Reporting API v4 和 Python 结合使用

    我遵循了有关如何使用 GA Reporting API 通过 Python 从 Google Analytics 下载数据的教程 尽管达到了行数限制 但我仍然能够查询所需的数据 我在文档中看到有一个 pageToken 可以避免这个问题 我
  • git 克隆失败并显示“--stdin 需要 git 存储库”

    我对这个问题感到困惑 并被困在这里 不知道为什么会发生 我正在使用 git clone 从 bitbucket 获取我的存储库 例如 git clone 电子邮件受保护 cdn cgi l email protection mycompny
  • ANTLR 4 和 AST 访客

    我正在尝试将 AST 与 ANTLR4 一起使用 并使用以下文件 生成器 java import org antlr v4 runtime ANTLRInputStream import org antlr v4 runtime CharS
  • 动态更改 Angular 指令元素属性

    我正在尝试创建一个自定义指令来扩展现有元素的功能 我想检测某个属性是否存在 如果不存在则添加它 例如 ng class 我试图在预编译期间实现这一点 但 Angular 不会对新属性的添加做出反应 I 创建了一个笨蛋 http plnkr