今天在做angularJS項目過程中,遇見了一個需求,在一個頁面中有多個表格,每個表格都有對應的分頁,點擊頂部對應的模塊,可以定位到每個表格模塊具體的位置。
頁面如下所示:
在angular中,為了使url地址訪問的時候更加方便,我們使用了html5mode方式,改變了url默認的hash樣式,對html5mode詳細了解請查看為什么angularjs使用ui-router時要使用html5Mode?
這時,如果我們使用錨點的方法就會存在一個問題,當我們點擊頂部的tab部分是,
頁面的url就回變成http://www.×××××.com?brandId=1&brandName=***#434
這個時候我們在點擊翻頁的時候,頁面就會跳轉到頁面的頂部,而不是我們訪問的這個位置。
解決的辦法是:
1. 不給tab部分添加類似與<a href="/test#333"></a>, 寫成 <a href="javascript:;"></a>阻止a標簽的默認操作。
2. 給 a 標簽添加點擊事件:
<a href="javascript:;" ng-click="_scrollTo('someId')"></a>
3. 定義對應的實現方法:
function _scrollTo(id){
var _id = document.getElementById(id);
window.scrollTo(0,_id.offsetTop);
}
ps: 這里的id是我們想跳轉到的節點對應的id