AngularJS 指令在元素完全加载之前运行

2024-06-28

我有一个附加到动态生成的指令<table>模板内的元素。该指令在 a 中操作该表的 DOMlink功能。问题是该指令在渲染表之前运行(通过评估ng-repeat指令) - 那么表是空的。

Question

如何确保该指令在表格完全呈现后运行?

<table directive-name>
    <tr ng-repeat="...">
        <td ng-repeat="..."></td>
    </tr>
</table>


module.directive("directiveName", function() {
    return {
        scope: "A",
        link: function(scope, element, attributes) {
            /* I need to be sure that the table is already fully
               rendered when this code runs */
        }
    };
});

从一般意义上来说,你不能仅仅通过一个指令来“完全确定”<table>元素。

但在某些情况下你可以确定。在你的情况下,如果内部内容是ng-repeat-ed,那么如果项目数组ngRepeatWorks 准备好了,那么实际的 DOM 元素将在摘要周期结束时准备好。您可以在之后捕获它$timeout0延迟:

link: function(scope, element){
  $timeout(function(){
    console.log(element.find("tr").length); // will be > 0
  })
}

但是,一般来说,您无法确定是否捕获了内容。如果ngRepeated 数组还没有吗?或者如果有一个怎么办ng-include反而?

<table directive-name ng-include="'templates/tr.html'">
</table>

或者,如果有一个自定义指令的工作方式与ngRepeat does?

但是,如果您完全控制内容,一种可能的了解方法是包含一些辅助指令作为最里面/最后一个元素,并让它联系其父元素directiveName当它链接时:

<table directive-name>
    <tr ng-repeat="...">
        <td ng-repeat="...">
          <directive-name-helper ng-if="$last">
        </td>
    </tr>
</table>
.directive("directiveNameHelper", function(){
  return {
    require: "?^directiveName",
    link: function(scope, element, attrs, ctrl){
      if (!ctrl) return;

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

AngularJS 指令在元素完全加载之前运行 的相关文章

随机推荐

  • python 线程:内存模型和可见性

    python 线程是否会像 Java 一样暴露内存可见性和语句重新排序的问题 由于我找不到任何对 Python 内存模型 或类似内容的引用 尽管事实上很多人都在编写多线程 Python 代码 但我猜测这些陷阱在这里不存在 不volatile
  • 如何检查用户输入的数字不大于 LLONG_MAX 或低于 LLONG_MIN?

    我想检查用户输入的数字是否大于或小于告知值 我知道关于环礁功能 http en cppreference com w c string byte atoi但它似乎没有特别帮助 基于未定义值的检查看起来不太令人信服 我还知道我可以检查用户输入
  • QML 缩放不适用于非整数缩放因子

    我正在使用 QML 编写一个应用程序 当我按非整数因子缩放 GUI 时遇到麻烦 根据文档 https doc qt io qt 5 highdpi html Qt AA EnableHighDpiScaling应该启用与设备无关的像素 因此
  • HTML5 全屏 Web 应用程序:没有浏览器栏

    我正在为移动设备创建 HTML5 Web 应用程序 并被要求隐藏浏览器导航栏 后退和前进按钮 前面这里有错字 我怎样才能做到这一点 我想我应该能够使用 Phone Gap 来实现这一目标 但我想知道 普通 网络应用程序是否有可能隐藏浏览器栏
  • gitignore 中的文件

    我在生产服务器中有一个带有 Rails 应用程序的存储库 在存储库中有 gitignore 文件 config database yaml 每个开发客户端都有一个具有不同 config database yaml 的克隆存储库 我的问题是这
  • 有谁知道有一个很好的库可以将一个人的名字映射到他或她的性别吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在寻找一个图书馆或数据库 可以根据一个人的名字或昵称猜测他或她是男性还是女性 就像是 john gt M mary gt F al
  • Spring Boot Rest API @RequestBody 中的 @Valid 与 @Validated [重复]

    这个问题在这里已经有答案了 我拥有开发 REST API 的 NET 背景 现在使用 spring boot 从事 java REST 项目 首先 我在控制器 RequestBody 上的验证停止工作 在尝试修复它时 我看到了不同的实施方法
  • TypeORM:将不相关的实体映射到数组属性中

    我有以下内容无关TypeORM 实体 由于各种原因 我不能在它们上使用一对多关系 Entity export class Book PrimaryGeneratedColumn id number Column name string En
  • 将 python 字节类型更改为字符串

    我正在使用 python 来使用 stackoverflow API 我运行以下命令 f urllib request urlopen http api stackoverflow com 1 0 stats d f read d 的类型是
  • Swift 中可选的闭包属性

    如何在 Swift 中将可选闭包声明为属性 我正在使用这段代码 var respondToButton sender UIButton gt Bool 但编译器抱怨该属性未在初始化程序结束时初始化 我相信我可以通过将 var 声明为可选来解
  • Cordova Ionic:启用 Android 表情符号软键盘

    使用 Cordova Ionic Android 您可以通过以下方式调用搜索键盘
  • 具有包含布局的数据绑定变量继承

    我正在学习数据绑定和 mvvm 我有一个问题 我想要一个BaseViewModel kt包含一些与 UI 相关的变量 例如isLoading旗帜和loadingText 当发出网络请求时 我设置isLoading为 true 并且我的基本视
  • 错误CS2001:找不到源文件“.cs”[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 当我尝试构建时 我的项目出现以下错误 错误 CS2001 找不到源文件 cs 我故意取出导致此错误的两个文件 因为它们与
  • 是否可以在不使用探查器的情况下跟踪 C# 应用程序中的内存使用情况?

    我想编写一个简单的应用程序来跟踪其当前的内存使用情况 创建的对象数量等 在 C 中 我通常会覆盖 new 运算符 但由于显而易见的原因 我无法在 C 中执行此操作 有没有办法在不使用分析器的情况下做到这一点 您可能想从垃圾收集器开始 MSD
  • 如何在 MariaDB 或 MySQL 中创建文本类型的外键?

    我有两张桌子 CREATE TABLE first table my id TEXT 6 NOT NULL content VARCHAR 30 NOT NULL PRIMARY KEY my id 6 Engine InnoDB char
  • 如何:在 Python 中生成 40/64 位 WEP 密钥?

    所以 几个月来我一直在这个问题上绞尽脑汁 部分是因为这是我的副业 部分是因为我不擅长编程 我在整个网络上进行了搜索和研究 但没有任何运气 除了一点点成功 见下文 所以我想我可以尝试询问专家 正如标题所示 我想做的是根据 事实上的 标准从密码
  • List remove(Object object) 何时以及为何返回 false

    该方法何时以及为什么boolean java util List remove Object object 返回假 文档指出 该方法返回 true 如果此操作修改了此 List 否则为假 为什么操作在List上不生效 注意 我正在使用的列表
  • @WebAppConfiguration 未注入

    我正在尝试使用 Spring 3 2 1 创建 spring mvc 测试 经过一些教程后 我认为这会很简单 这是我的测试 RunWith SpringJUnit4ClassRunner class ContextConfiguration
  • Android 上的位图大小超出 VM 预算错误

    我正在将 Asset 文件夹中的 100 张图像加载到数组对象中 图片非常小 每张 png 20k 我使用此代码对其进行处理 并防止内存泄漏和优化性能 循环中 create resized bitmap from asset resourc
  • AngularJS 指令在元素完全加载之前运行

    我有一个附加到动态生成的指令 table 模板内的元素 该指令在 a 中操作该表的 DOMlink功能 问题是该指令在渲染表之前运行 通过评估ng repeat指令 那么表是空的 Question 如何确保该指令在表格完全呈现后运行 tab