2

リンクのリストを表示する ng-repeat ディレクティブがあります。それは正常に動作しますが、私のコードには、その次元に応じてリストを配置する JavaScript 関数もあります。当然、リストの次元は、Angular がデータバインディングと DOM の変更を完了するまでわかりません。データを変更した直後に関数を呼び出すと、配置計算がジャンプしてリストが空であるかのように配置されます。Angular が DOM の変更を完了したら、関数を起動したいと思います。どうやってやるの?

編集:

考えられる解決策として ngcloak を試してみましたが、残念ながら機能しません。ngcloak のドキュメントを読むと、私の問題はリストがちらつくことではなく、空のように配置され、そこにとどまることです。データバインディングが完了したら、関数を呼び出す方法が必要です。

4

5 に答える 5

1

要素の配置にmasonry のようなライブラリを使用しているようです。その場合は、 angular masonryディレクティブを使用してください。jQueryも排除するフォークがあります。
とにかく、それを見てください、役に立つでしょう。

  • テキストデータの場合、次のようにわずかな遅延が機能します。

    timeout = $timeout(function layout() {
      //layout elements 
    }, 30);
    
  • 画像の場合、 image を完全にロードする前に寸法を取得できます。ここで良い方法を見つけることができます。

于 2014-10-28T11:54:15.787 に答える
0

データの変更が発生したら、$timeout サービスを使用して、遅延後に修飾子を呼び出します。時間を正しく推測できないためにタイムアウトの信頼性が十分でない場合は、100ms などの短いタイムアウトの後に自分自身を呼び出す再帰関数を記述して、angular がダイジェストまたは適用フェーズにあるかどうかを確認できます。ダイジェストまたは適用フェーズでない場合は、配置修飾子を呼び出すことができます。

于 2013-10-04T20:28:32.343 に答える
0

ngCloakはあなたが探しているものだと思います。

于 2013-10-04T13:57:23.720 に答える