このjQueryフェードインアンドアウトフィドル(JSFiddles Examples wikiページで見つけました)では、作成者は「fadey」ディレクティブを定義し、ディレクティブのリンク関数でjQueryフェードイン(またはフェードアウト)を実行します。
<li ng-repeat="item in items" fadey="500">
...
myApp.directive('fadey', function() {
return {
restrict: 'A',
link: function(scope, elm, attrs) {
var duration = parseInt(attrs.fadey);
if (isNaN(duration)) {
duration = 500;
}
elm = jQuery(elm); // this line is not needed if jQuery is loaded before Angular
elm.hide();
elm.fadeIn(duration)
別の可能な解決策は、$evalAsyncを使用することです。Miškoによるこのコメントを参照してください。彼は次のように述べています。
asyncEvalは、DOMの構築後、ブラウザーがレンダリングする前です。それがjqueryプラグインをアタッチしたい時だと思います。そうしないと、ちらつきが発生します。ブラウザのレンダリング後に本当に実行したい場合は、$ defer(fn、0);を実行できます。
($deferは$timeoutに名前が変更されました)。
ただし、(DOMを操作しているため)ディレクティブを使用する方が良いアプローチだと思います。
これは、いくつかのjQuery関数を適用するために、OPがスコープで$ viewContentLoadedイベントをリッスンしようとしたSO投稿です(これはさらに別の代替手段です)。提案/回答は、再びディレクティブを使用することでした。