2016-07-19 14 views
0

私は、Angular http getを使用して、潜在的に大量のデータフォームを取得し、ページのペインにレンダリングするSPAを持っています。私が持っている問題は、jquery $(document).ready関数が呼び出される前にhttp getからの完全な応答が受け取られていない場合、正しく動作しないjqueryを使用するファンシーなスクロールバーがあることです。小規模のデータセットの場合は問題ありません。データセットが大きいだけです。

私はjQuery $(document).ready関数にsetTimeoutを導入するという部分的な解決策を見出しましたが、これはあまりエレガントではありません。

jquery $(document).readyを角から呼び出す方法はありますか?httpのすべてを受け取ったのですか?または、私が呼び出すことができる別の角度関数がありますか?

+1

'document.ready'は角アプリで事実上無用である。このようになりますHTMLで

var module = angular.module('testApp', []) .directive('onFinishRender', function ($timeout) { return { restrict: 'A', link: function (scope, element, attr) { if (scope.$last === true) { $timeout(function() { scope.$emit(attr.onFinishRender); }); } } } }); 

....指示文を使ってDOMコードを管理する – charlietfl

+0

'$(document).ready'ハンドラで何をしていますか?なぜあなたはそれが必要なのですか?また、ちょうどエレガントであることを超えて、 'setTimeout'は敷物の下の問題を掃除し、確定的に解決しません。予期しない遅れやCPUスパイクが発生した瞬間に問題が再発するような、不安定な解決策になります。 –

+0

ええ、私は完全に同意します。私は、会社がスタイリングを好きで、角度データを挿入するのが好きなテンプレートを使用しています。テンプレートの中の1つは、ドキュメントのときに初期化するjqueryスクロールバーです。準備ができましたが、ドキュメントは実際には準備ができていません。 –

答えて

0

と組み合わせてangular-routeを使用すると、ルートがレンダリングされる前に特定の約束応答を待つ可能性があります。

アプリケーションルートが「init」データに依存する場合は、これらの解決策を使用することをお勧めします。

resolve - {Object。=} - コントローラに注入する必要がある依存性の のオプションのマップです。 のいずれかがこれらの依存関係を約束している場合、ルータは がインスタンス化される前に、すべてが に解決されるのを待つか、1つは拒否されるのを待ちます。すべての約束が正常に解決された場合は、解決済みの約束の値が入力され、$ routeChangeSuccess イベントが発生します。約束のいずれかが拒否された場合は、 $ routeChangeErrorイベントが発生します。解決された のテンプレートからの依存関係へのアクセスを容易にするために、解決マップは、 のルートの有効範囲($ resolve(デフォルト))またはresolveAsプロパティ(下記参照)によって指定されたカスタム名 で利用可能になります。ルートテンプレートとしてコンポーネントを操作する場合、これは特に便利です( )。

More information here

Using Resolve In AngularJS Routes

+0

ありがとう、私はルーティングのためにExpressJSを使用しているので、これは私にとってはうまくいかないかもしれません。 –

1

あなたの問題はあなたがNG-repeatがDOMのレンダリングが終了したときに知ってほしい、ということのようです。私はこれがpostあなたを助けることができると思う。

それ言う準備ができてDOMの機能を起動するディレクティブを作成:

<div ng-repeat="item in items" on-finish-render="ngRepeatFinished"> 
    <div>{{item.name}}}<div> 
</div> 
関連する問題