コメントに関する以下の解決策。
問題: 私の loadMore() メソッドは、すべてのコンテナのスクロールで実行されます。
意味: loadMore() は、親コンテナーの各マウス スクロールで実行されます ( infinite-scroll-parent="true"
)
望ましい結果: loadMore() を取得するには、infiniteScrollDistance が条件を満たしている場合にのみ実行します。
私のコードは、 demo_basicとdemo_asyncに非常にインスパイアされています。
私のアプリは写真ギャラリーです。写真を ajax 呼び出しで読み込み、サムネイル ディレクティブ リピーターに入力します。コントローラーの初期化時に ng-Infinite-Scroll を無効にし、コールバックの成功時に有効にします。
<div class="thumbnails grid__item page--content">
<div id="gallery" class="unstyled-list"
infinite-scroll='loadMore()'
infinite-scroll-disabled='album.busy'
infinite-scroll-parent="true"
infinite-scroll-immediate-check="false"
infinite-scroll-distance='2'>
<my-photo-directive ng-repeat="photo in photos"></my-photo-directive>
</div>
</div>
私のコーヒーコードには驚きはありません。単純なconsole.logを配置すると、問題がまだ発生するため、ロジックは重要ではありません.....
$scope.album.busy = true
$scope.loadMore = ->
$scope.$apply ->
$scope.album.busy = true
console.log('loadMore() been executed here')
私のサムネイルディレクティブは同じです。当然のことながら、最後の写真がリピーターに取り込まれた瞬間に、コンポーネントを有効にします。
app.directive 'myPhotoDirective', ['$window', ($window) ->
return {} =
....
link: (scope, element, attrs) ->
if scope.$last
scope.album.busy = false
何が欠けているのか、間違っているのかわかりません。誰かが私を助けてくれることを願っています。
ありがとうございました。