angularjs - ng-show/ng-if 不会立即更新 dom 高度

标签 angularjs cordova ionic-framework

我有一个很长的 div,它是由 ng-hide 隐藏/显示的。 这是基于 ionic demo 的示例.

单击按钮可以显示或隐藏longDiv。如果您尝试在隐藏或显示页面后立即滚动页面。 有时你会发现即使longDiv隐藏后页面仍然可以向下滚动。有时,即使在 longDiv 显示后,页面也无法向下滚动。但如果你等待几秒钟,然后尝试滚动页面,滚动条可以匹配页面的实际高度。

HTML:

<ion-content ng-controller="controller">
  <button ng-click="test.show_detail=!test.show_detail">{{test.show_detail}}</button>
  <div ng-show='test.show_detail'>
    <div ng-repeat='i in test.list'>
      {{i}}
    </div>
  </div>
</ion-content>

JS:

.controller('controller', function ($scope) {
     $scope.test = {};
     $scope.test.show_detail = true;
     $scope.test.list = [];
     for(i=0; i< 1000; i++){
       $scope.test.list.push(i);
     }
}

如果长 div 容器中存在复杂的模板内容,则很容易重现此问题。

有什么方法可以避免这个问题吗?

最佳答案

我不太了解 Ionic,无法解释为什么它更新这么慢,但您应该能够通过使用 overflow-scroll 属性激活 native 滚动来解决它:

<ion-content ng-controller="controller" overflow-scroll="true">

或者通过在 Controller 中注入(inject) $ionicScrollDelegate 并手动调用 resize:

$scope.toggle = function() {
  $scope.test.show_detail = !$scope.test.show_detail;
  $ionicScrollDelegate.resize();
};

关于angularjs - ng-show/ng-if 不会立即更新 dom 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34605039/

相关文章:

angularjs - 使用 Angularfire v2 进行简单的 Firebase v3 数据检索

javascript - 如何更改文件://to http://in angular/ionic when calling external scripts such as the disqus directive

javascript - 连续写入服务器中的文件很慢

javascript - AngularJS : Expandable recursive tree table

android - 如何在 PhoneGap 中获取 IMEI 号码?

xcode - 更新到 Xcode 7 后出错

css - 媒体查询不采用 ionic 元素

android - Cordova Android 应用程序在某些设备上无法访问互联网

android - 发送 Blob 结果为空

angularjs - 错误 : Cannot find module '@ionic/app-scripts'