首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在编译和链接嵌套/排除指令时执行一些操作

在编译和链接嵌套/排除指令时执行一些操作
EN

Stack Overflow用户
提问于 2016-05-20 10:55:48
回答 1查看 59关注 0票数 0

想一想下面的指令标记:

代码语言:javascript
复制
<!-- Directive A -->
<directive-a>
</directive-a>

<-- Directive B -->
<directive-b>
   <directive-a>
        <transclusion1></transclusion1>
   </directive-a>
</directive-b>

一旦<directive-a>已经是来自<directive-b>的compiled+linked,我需要执行一些DOM操作。

当我在link (或compile函数)上提供一个<directive-a>函数时,<directive-a>仍然没有被屏蔽的内容。

一旦<directive-a>已经是compiled+linked,我就不知道如何执行DOM操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-20 12:02:44

最后,解决方案比我开始实现解决方案时想象的更容易。

假设有具有以下选项的<directive-a>

代码语言:javascript
复制
{
    scope: {
        "postLink": "&"
    }
}

...and,作为controller()函数的一部分,我需要:

代码语言:javascript
复制
{
    controller: () => {
        // Angular 1.5.3+
        this.$postLink = $scope.postLink;
    },
    scope: {
        "postLink": "&"
    }
}

现在我可以挂钩到<directive-a> $postLink钩子了:

代码语言:javascript
复制
<-- Directive B -->
<directive-b>
   <directive-a post-link="model.directiveAPostLink()">
        <transclusion1></transclusion1>
   </directive-a>
</directive-b>

当调用整个model.directiveAPostLink()函数时,<directive-a>已经编译和链接了!

进一步详情

检查角GitHub的存储库提交历史,我找到了以下描述:

在此控制器的元素及其子元素之后调用的$postLink被链接。类似于后链接函数,这个钩子可以用来设置DOM事件处理程序并直接执行DOM操作。注意,包含templateUrl指令的子元素不会被编译和链接,因为它们正在等待它们的模板异步加载,并且它们自己的编译和链接一直挂起直到出现。

这正是我的情况:我正在从URL中加载模板。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37344873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档