Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在ionic中停止Inifinite滚动_Angularjs_Ionic Framework_Ionic - Fatal编程技术网

Angularjs 在ionic中停止Inifinite滚动

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

所以我尝试在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 > 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++]));
我不知道为什么

  • 在没有任何其他继承更改的情况下,“ng if”是 工作,滚动在50个数据点后停止
  • 为什么在没有向数组中添加新项目的情况下,项目的长度增加了

  • 这在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
           });
      });