2017-12-25 28 views
0

htmlドキュメントの上に要素を表示するはずです。ユーザーがスクロールして要素がビューから外に出ると、ページの下部に異なるスタイルの同じ要素が表示されます。私は単純なスクロールファンクティリティを実装し、最上位の要素が見えなくなるとすぐに発火するように最下位の要素にng-showを配置しました。 vm.itemShowは、最終的に表示された「偽」コンソールの最初の要素がビューの外に出るときは、それがないにもかかわらずウィンドウスクロールでng-showが動作しない

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

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

:ここ

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コード(それぞれ第1および第2要素)であります2番目の要素でng-showをトリガしません。ウィンドウのサイズを変更すると、ng-show値が同じ(false)になっていてもng-showがトリガーされます。 vm.itemShowがtrueからfalseに変わるたびに、ng-showをどのように起動させるのですか?以下のように変更することにより、

答えて

0

てみてください、

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

OR

$タイムアウトが処理するbcozあなたはonscrollイベント内$タイムアウト()FUNCを(タイムアウト機能の中にあなたのスコープ変数の値を変更する)、(使用することができますダイジェストサイクル)

+0

私は両方を試みましたが、それは動作しません。他に提案はありますか? –

関連する問題