Angularjs 在ionic中停止Inifinite滚动
所以我尝试在ionic中实现无限滚动,我有一个ng if on noMoreItemsAvailable。我看到了控制台日志,但无限滚动并没有停止。我对JS/IONAL都是新手Angularjs 在ionic中停止Inifinite滚动,angularjs,ionic-framework,ionic,Angularjs,Ionic Framework,Ionic,所以我尝试在ionic中实现无限滚动,我有一个ng if on noMoreItemsAvailable。我看到了控制台日志,但无限滚动并没有停止。我对JS/IONAL都是新手 $scope.idx = 0; $scope.noMoreItemsAvailable = true; $scope.loadMore = function() { $scope.items.push($scope.items[$scope.idx++]); if ( $scope.items.length
$scope.idx = 0;
$scope.noMoreItemsAvailable = true;
$scope.loadMore = function() {
$scope.items.push($scope.items[$scope.idx++]);
if ( $scope.items.length > 50 ) {
console.log("Debug"+$scope.items[$scope.idx].name);
$scope.noMoreItemsAvailable = false;
}
$scope.$broadcast('scroll.infiniteScrollComplete');
};
HTML:
首先,
ngIf
创建一个子范围:如果使用chrome扩展batarang并检查$scope.noMoreItemsAvailable===true
,但是$scope.noMoreItemsAvailable
中的ngIf
范围内的noMoreItemsAvailable
很可能为false——这是一个常见的问题(请参阅简短的答案,因为Javascript的原型固有性,这就是原因)。快速修复方法是将.nomoreimsavailable
作为某个对象($scope.myObj.nomoreimsavailable
)上的属性,它将修复继承问题
<>也可以,因为<代码> NGIF <代码>创建子范围,<代码> <代码>可能不会得到<代码>滚动。e、 我没有使用该指令,所以我不确定,但如果是这样的话,我也不会感到惊讶
我可能在这里捏造了一些细节,但底线是:阅读有关角度“点”的文章,并知道
ngIf
create是一个子范围!我成功地实现了这一点,但我不能完全确定我是否能解释为什么它会成功
我观察到这一行被执行了,但是没有被全局更新,不确定如何最好地解释它。因为在函数中,项目的局部长度在增加,但没有反映在我的html中(ng repeat)
我加了这一行
$scope.$apply();
现在,由于我正在将静态数组的数据反馈给它,它开始抛出错误,指示我不能两次添加同一个对象
我用这个替换了原来的“推”来修复这个问题
$scope.items.push(angular.copy($scope.items[$scope.idx++]));
我不知道为什么
这在ionic的最新rc1版本中有效。我已经让它工作了,请参见下面的答案。也许您可以帮助解释它工作的原因。谢谢
$scope.$apply();
$scope.items.push(angular.copy($scope.items[$scope.idx++]));
$timeout(function() {
$timeout(function() {
$scope.$broadcast('scroll.infiniteScrollComplete');
// call your ng-if to set to false
});
});