ng-show无法处理窗口滚动

时间:2017-12-25 13:10:04

标签: html angularjs scroll 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最终显示“假”&#39;在控制台中,当第一个元素离开视图时,它不会触发第二个元素中的ng-show。当我调整窗口大小时,即使ng-show值保持不变(false),也会触发ng-show。当vm.itemShow从true变为false时,如何触发ng-show?

1 个答案:

答案 0 :(得分:0)

尝试改变如下,

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

OR

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