2014-10-28 27 views
8

我有一个Angular指令,它创建了<ol><li>元素中的一个手风琴,其中每个<li>的内容都被封装在一个transcluded模板中。我需要启动一个方法来检查这些<li>元素中是否有错误,并打开该手风琴,但是我找不到方法在之后触发元素被传输后的方法在transclude完成后触发一个方法

是否有挂钩或指令配置,将时间正确?

+0

像这样的东西也会对我有帮助。我想你可以在AngularJS中播放或发布一个事件。但是这也取决于你如何跨越你的内容。 ng-if的方式与ng-repeat不同,也取决于你是否将transclude设置为true或“element”。 – 2015-08-06 16:55:22

+3

@ b.e.hollenbeck你可以添加同样的plunkr /小提琴吗? – 2015-08-08 19:57:22

+0

我们需要看看你的指令是如何构造的,以及一些示例html来看看它是如何工作的。然后我们可以看到可以做些什么。文档中提到了一个可以使用的回调函数:https://code.angularjs.org/1.3.10/docs/api/ng/service/$compile#transclusion-functions – JoseM 2015-08-11 16:24:51

回答

2

我想你可以访问指令定义对象中定义的postLink函数中的内容。检查官方documentation

指令定义对象允许您定义:

compile: function compile(tElement, tAttrs, transclude) { 
    return { 
    pre: function preLink(scope, iElement, iAttrs, controller) { ... }, 
    post: function postLink(scope, iElement, iAttrs, controller) { ... } 
    } 
    // or 
    // return function postLink(...) { ... } 
}, 

而且你可以注入和访问iElement及其内容。这发生在模板编译之后,因此<li>元素应该已经到位。

+3

如果他打算使用后链接,不妨使用''link:function(scope,element, attrs,ctrl)''而不是编译。 – 2015-08-11 16:56:13

相关问题