如何使用Ionic中的滚动事件更改范围变量?

时间:2016-12-12 16:38:25

标签: html css angularjs ionic-framework

当滚动位置的值从顶部大于100但我不想工作时,我想更改变量的值,$scope中的值不会改变。 这是代码:

 <div ng-show="title===true">
  <p>{{title}}</p>
  <p>{{card.nome}}</p>
  <p>{{card.prezzo}}€</p>
</div>

<ion-content style="top:0px" delegate-handle="cardScroll" on-scroll="getPositionScroll()">

$scope.title = true;
  $scope.getPositionScroll = function () {
    console.log("scrollPosition " + JSON.stringify($ionicScrollDelegate.$getByHandle('cardScroll').getScrollPosition().top));
    console.log("valore title " + $scope.title);
    console.log($ionicScrollDelegate.$getByHandle('cardScroll').getScrollPosition().top >= 100);
    $scope.title = $ionicScrollDelegate.$getByHandle('cardScroll').getScrollPosition().top >= 100;
  };

有谁知道为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

我认为这可能与Angular不跟踪getPositionScroll()函数所做的更改这一事实有关。许多Angular函数都包含在$scope.$apply()函数中,该函数通知Angular已经进行的更改。但是我认为用于跟踪滚动的函数没有包含在这个函数中,这意味着你需要自己调用它。

所以在$scope.title之后添加:

$scope.$apply($scope.title);

关于何时使用$scope.$apply()like this one,有很多问题,如果过度使用,可能会严重损害您应用的效果。 Angular documentation中也有相关信息。您还可以在this question中找到关于何时在滚动事件中使用此函数的一些见解。