我遇到了类似的问题,想在这里分享我的解决方案。
我有以下HTML:
<div data-my-directive>
<div id='sub' ng-include='includedFile.htm'></div>
</div>
问题:在父div指令的链接功能中,我想对子div#sub进行jquery。但这给了我一个空的对象,因为当指令的链接功能运行时ng-include尚未完成。因此,首先我用$ timeout进行了一个肮脏的解决,它可以工作,但是延迟参数取决于客户端速度(没人喜欢)。
可行但很脏:
app.directive('myDirective', [function () {
var directive = {};
directive.link = function (scope, element, attrs) {
$timeout(function() {
//very dirty cause of client-depending varying delay time
$('#sub').css(/*whatever*/);
}, 350);
};
return directive;
}]);
这是干净的解决方案:
app.directive('myDirective', [function () {
var directive = {};
directive.link = function (scope, element, attrs) {
scope.$on('$includeContentLoaded', function() {
//just happens in the moment when ng-included finished
$('#sub').css(/*whatever*/);
};
};
return directive;
}]);
也许对某人有帮助。