ionic-framework - ionic 无限滚动循环永远调用无限回调

标签 ionic-framework infinite-scroll ion-infinite-scroll

问题:如果我退出当前 ion-viewon-finite回调未完成处理,on-infinite回调将开始在循环中被调用,直到应用程序卡住,即使我不再在 View 中 ion-infinite-scroll已安装。

这很难重现,但我找到了一种轻松体现它的方法。在 View 上设置无限回调。

<ion-infinite-scroll
    immediate-check="false"
    on-infinite="loadMore()"
    distance="5%">
</ion-infinite-scroll>

然后使用 $timeout人为地减慢loadMore()功能到 2 秒。像这样的东西:
$scope.loadMore = function() {
    console.log("Loading more...");
    $timeout(function() {
        $scope.$broadcast('scroll.infiniteScrollComplete');
    }, 2000);
};

现在,触发无限滚动,而您的 loadMore()功能是“处理”2 秒,离开你的看法。您会看到,即使您在另一个 View 中,控制台也会每 2 秒继续打印“正在加载更多...”。即,loadMore()正在循环中调用。

在真实情况下,此错误导致应用程序严重卡住。在某些链接上,此问题已得到解决,但没有解决方案( ionic 论坛已关闭 atm,顺便说一句)。一些解决方案建议调用 infiniteScrollComplete$apply() 内,但这并不能解决它,实际上会触发 digest already in progress错误。其他人建议使用$timeout(...,0)作为 $apply() 的替代方案但如果,例如,您的 loadMore(),问题仍然会出现。对您的服务器进行异步调用,在这种情况下,用户仍有可能在 loadMore() 时退出 View 忙。

是否有任何建议的解决方法?

ionic 团队:这是一个错误。所有关于 ion-infinite-scroll 的文档都完全忽略了这一点。至少应该有警告。我的 ionic 版本 1.7.16。

最佳答案

尝试以下代码以停止加载更多回调。

html

<ion-view view-title="Search">
    <ion-content>
        <h1>Search</h1>
        <ion-infinite-scroll
        immediate-check="false"
        ng-if="!noMoreItemsAvailable"
        on-infinite="loadMore()"
        distance="5%">
    </ion-infinite-scroll>
</ion-content>
</ion-view>

Controller
$scope.loadMore = function()
{
    $http({
    method:'GET',
    url:'http://headers.jsontest.com/'
    }).then(function(response)
    {
        console.log(response);
        $scope.noMoreItemsAvailable = true;
    }, function(response)
    {});
}

关于ionic-framework - ionic 无限滚动循环永远调用无限回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43302746/

相关文章:

c# - WP 8.1 ISupportIncrementalLoading LoadMoreItemsAsync 不断被调用

javascript - 如何在 angularjs 中进行自动完成(过滤器列表不显示)

cordova - ionic 服务在本地主机而不是服务器IP上启动

angularjs - 无法使用 ui-grid 的 InfiniteScroll 功能

ionic3 - Ionic 3 - 水平滚动的无限滚动

html - ionic 无限滚动在 ionic 滚动内部不起作用

angular - ionic 3 应用程序中的更改检测问题

javascript - 清除设定间隔

javascript - jQuery无限滚动缺少CSS背景加载量页面