1

ng-repeatの実行のタイミングに関して、そしてコントローラの実行のタイミングと矛盾するところで、幾分奇妙なAngularJS1の動作を特定したと思います。anchorScrollはng-repeatでコントローラで実行されませんか?

コントローラが自動的にhtmlアンカーIDにスクロールダウンします。ID: $ anchorScroll( 'html_id');

これはngのリピート(ng-repeat plunker

によって生成されたdivにコントローラによって呼び出された場合( static html plunker

<div id="hello1">Hello1 </div>
しかしanchorScroll doesntのが動作するように見える静的HTMLで正常に動作します

<div id="{{ITEM.slug}}" ng-repeat="ITEM in LIST">{{ITEM.slug}}</div>
...

NOTE ngのリピートに:: anchorScrollはボタンで正常に動作しますが、私はそれが負荷に自動的にスクロールしたい

(私もスクロール機能を呼び出すために= usigのNG-INITを試してみましたが、同じタイミングの問題 - それは)NGリピートAFTER

任意のアイデア/回避策をコード化しても...アンカーを見つける傾けるよう?

項目が実際にレンダリングされているように$anchorScrollは、後のダイジェストサイクルを実行する必要があり、これが機能する

答えて

1

(...に結合する任意のNGリピートのイベントがあるように思われるのdoesnt) 。

これを行う最も簡単な方法は、0秒遅れで$timeoutを使用して解決される約束事を作成することです。 0の遅延では、の現在のダイジェストサイクルが完了した後、すぐに処理されるのではなく、約束が処理されます。

testApp.controller('testCtrl', function($scope, $anchorScroll, $timeout) { 
    $scope.LIST = [{ 
    "slug": "hello1" 
    }, { 
    "slug": 'hello2' 
    }, { 
    "slug": 'hello3' 
    }]; 

    $timeout(function() { 
    $anchorScroll('hello3'); 
    }, 0); 
}); 

https://plnkr.co/edit/53hlGNig7eozlm1vqkQL?p=preview

+0

あなたはスターです!ニースのクリーンなソリューション - まさに私が探していたもの - ありがとう:) – Corvin

関連する問題