無限スクロールがより多くのリスト項目をロードしているときにロードブロックを表示しようとしていますが、初めて問題はありませんが、以下は機能しません。「$scope.isLoading = true;」の場合 ブロックは表示されません。
HTML
<ons-scroller infinit-scroll-enable="true" on-scrolled="getNextItems()" threshold="20" style="height:100%">
<ons-list-item ng-repeat="i in items" modifier="tappable chevron">{{i.name}}</ons-list-item>
<ons-list-item ng-show="isLoading"> LOADING </ons-list-item>
</ons-scroller>
ジャバスクリプト
$scope.getNextItems = function(){
if($scope.isLoading) return;
$scope.isLoading = true;
setTimeout(function(){
$scope.$apply(function(){
addItems($scope.items);
$scope.isLoading = false;
});
},3000);
};
これが問題のフィドルです。
これを行うためにさまざまな方法を試しましたが、常に同じ結果です。
前もって感謝します!!
@rohan が答えると、問題は $timeout で解決され、私が望む動作は次のようになります。
http://jsfiddle.net/hasukronos/mh6roxsk/1/
しかし、本当の問題は、ネイティブの setTimeout と同じ問題を持つ WebSQL API コールバックで発生することを忘れていました。