同様の問題があり、私の解決策をここで共有したいと思います。
次の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;
}]);
多分それは誰かを助ける。