ng-show无法处理窗口滚动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ng-show无法处理窗口滚动相关的知识,希望对你有一定的参考价值。

我应该在html doc上面显示一个元素。如果用户滚动并且元素离开视图,我应该在页面底部显示具有不同样式的相同元素。我已经实现了一个简单的滚动功能,并且只要顶部元素不在视图中,就会在底部元素上放置ng-show。

var tester = document.getElementsByClassName('recommendationTable')[0];

window.onscroll = function() {
vm.itemShow = checkVisible(tester);
// $scope.apply();
console.log(checkVisible(tester));
};

function checkVisible(elm) {
var rect = elm.getBoundingClientRect();
var viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight);
return !(rect.bottom < 0 || rect.top - viewHeight >= 0);
}

这是HTML代码(分别是第一个和第二个元素):

<table  class="pull-right col-sm-9 recommendationTable"></table>

<table  class="pull-right col-sm-12 recommendationTableBottom" ng-show='!
{{vm.itemShow}}'></table>

即使vm.itemShow在第一个元素离开视图时最终在控制台中显示“false”,它也不会触发第二个元素中的ng-show。当我调整窗口大小时,即使ng-show值保持不变(false),也会触发ng-show。每当vm.itemShow从true变为false时,如何触发ng-show?

答案

尝试改变如下,

<table  class="pull-right col-sm-12 recommendationTableBottom" ng-show="vm.itemShow"></table>

要么

你可以在onscroll事件中使用$ timeout()func(在超时函数内改变你的范围变量值),(bcoz $ timeout将处理摘要周期)

以上是关于ng-show无法处理窗口滚动的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS - 可以 ng-show/ng-hide 模式窗口吗?

聚合物相当于ng-show?

无法使用 ng-show 更改登录按钮的名称

当我将片段添加到我的视图寻呼机时(在嵌套滚动视图中),我无法从具有设备后退按钮的应用程序退出

UITableView 在滚动/分页时无法正确处理 contentOffset

无法让 ng-hide 和 ng-show 使用令牌