我有以下DOM:
<carousel calculate-carousel-height>
<slide ng-repeat="article in bestArticles" active="slide.active">
<div>{{article.text}}</div>
</slide>
</carousel>
carousel
指令使用了transcluded范围,因此我可以在自定义指令calculate-carousel-height
的链接函数中获取它:
link: function (scope, element, attributes, ctrl, transcludeFn) {
transcludeFn(function( clonedTranscludedContent ) {
// here I can access the transcluded scope
});
}
然而,问题是这个范围尚未编译(ng-repeat指令尚未处理)因此我没有article.text
并且无法计算包含文本的DOM的高度。如何以及何时可以在编译后访问被转换的范围?
这会有效,但它是最好的解决方案吗?
link: function (scope, element, attributes, ctrl, transcludeFn) {
setTimeout(function () {
// angular finished its magic and I can access compiled transcluded DOM here
}, 0);
}
答案 0 :(得分:0)
我与ng-repeat
有类似的问题,这就是我修复它的方法:
link: function(scope, element, attrs) {
scope.$watch('article.text', function(text) {
console.log(text);
}
}
在这种情况下,我不确定转换功能,也许这不是正确答案,但它可能指向正确的方向。