私も同様の問題を抱えていたので、ここで解決策を共有したいと思います。
私は次のHTMLを持っています:
<div data-my-directive>
<div id='sub' ng-include='includedFile.htm'></div>
</div>
問題:親divのディレクティブのリンク関数で、子div#subをjqueryしたかった。しかし、ディレクティブのリンク関数が実行されたときにng-includeが終了していなかったため、空のオブジェクトが表示されました。そこで、最初に$ timeoutを使用して汚い回避策を作成しました。これは機能しましたが、delay-parameterはクライアントの速度に依存していました(誰もそれを好きではありません)。
動作しますが汚れています:
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;
}]);
多分それは誰かを助けます。