2013-02-06 32 views
1

詢問「是否有更多的滾動或讓我們到達Angular中可滾動區域的底部?」的最佳方式是什麼?AngularJS - >查詢「處於頁面底部」

擁有一個帶有固定底部導航欄的單頁應用程序,並且希望顯示一個UI提示,指示有更多內容要顯示,條件是不在頁面結尾。思考有一個書籤方式(哈希標籤)來做到這一點。

+2

這是jquery/dom比angularJS相關的更多,在一天結束時,你將不得不寫一個指令。 – mpm

+0

不知道scrollspy是否可以在這裏工作 –

+0

另請參閱:https://github.com/angular-ui/ui-utils/blob/master/modules/scroll/README.md – apairet

回答

5

這是一種解決方案:我已經創建結合滾動事件,並在它的情況是可能的指令,向下滾動顯示它的div,附加在編譯的時候:

app.directive('thereIsMore', function() { 
    return { 
    restrict: 'A',  
    scope: true, 
    compile: function(tElement) { 
     tElement.append('<div class="there-is-more" ng-show="bottom">There is more...</div>'); 
     return function(scope, element) { 
     var elm = element[0];   
     var check = function() { 
      scope.bottom = !(elm.offsetHeight + elm.scrollTop >= elm.scrollHeight); 
     }; 
     element.bind('scroll', function() { 
      scope.$apply(check);   
     }); 
     check();   
     }; // end of link 
    }  
    }; 
}); 

工作例如:http://plnkr.co/edit/8W3E7BunpDxIkEPDqxzb?p=preview

+0

謝謝!這正是我正在尋找的內容,但不幸的是,elm.scrollHeight在初始加載時並未在多個瀏覽器中準確報告。它需要scroll或resize事件來更新真正的scrollHeight。因此僅提供初始負載的準確指標是不夠的。所以底部返回true,直到用戶開始滾動,但顯示提示的最重要時間是在用戶滾動之前(因爲提示是爲了讓用戶滾動)。不知道如何解決此問題(在Chrome,Chromium,IE中失敗)。 –

+0

我已經通過添加一些附加事件來更新plunker:當窗口被調整大小並在一些超時後重新檢查底部時。 –

+0

看起來像超時和窗口大小調整了問題。謝謝! –