我有一个Angular指令,它创建了<ol>
和<li>
元素中的一个手风琴,其中每个<li>
的内容都被封装在一个transcluded模板中。我需要启动一个方法来检查这些<li>
元素中是否有错误,并打开该手风琴,但是我找不到方法在之后触发元素被传输后的方法。在transclude完成后触发一个方法
是否有挂钩或指令配置,将时间正确?
我有一个Angular指令,它创建了<ol>
和<li>
元素中的一个手风琴,其中每个<li>
的内容都被封装在一个transcluded模板中。我需要启动一个方法来检查这些<li>
元素中是否有错误,并打开该手风琴,但是我找不到方法在之后触发元素被传输后的方法。在transclude完成后触发一个方法
是否有挂钩或指令配置,将时间正确?
我想你可以访问指令定义对象中定义的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>
元素应该已经到位。
如果他打算使用后链接,不妨使用''link:function(scope,element, attrs,ctrl)''而不是编译。 – 2015-08-11 16:56:13
像这样的东西也会对我有帮助。我想你可以在AngularJS中播放或发布一个事件。但是这也取决于你如何跨越你的内容。 ng-if的方式与ng-repeat不同,也取决于你是否将transclude设置为true或“element”。 – 2015-08-06 16:55:22
@ b.e.hollenbeck你可以添加同样的plunkr /小提琴吗? – 2015-08-08 19:57:22
我们需要看看你的指令是如何构造的,以及一些示例html来看看它是如何工作的。然后我们可以看到可以做些什么。文档中提到了一个可以使用的回调函数:https://code.angularjs.org/1.3.10/docs/api/ng/service/$compile#transclusion-functions – JoseM 2015-08-11 16:24:51