寫在前面
有個單頁應用的項目中,需要通過錨點進行頁面的定位。但angularjs的路由會出現跟錨點沖突,angularjs會將錨點當成路由進行解析,造成跳轉到這個頁面,而我們需要的只是跳轉到當前的錨點位置。angularjs的路由格式#/home/en。比如錨點的id為navigate-label,當觸發跳轉到錨點時,會出現#/navigate-label.
解決辦法
angularjs提供了一個$anchorScroll,用來實現錨點的功能。
用法如下:
在controller中引入$anchorScroll.
在該controller中,就可以通過下面的方式實現當前頁面錨點定位。
app.controller('MyController', function ($scope, $anchorScroll, $http, $location, $routeParams, $translate) { $location.hash('navigate-label'); $anchorScroll(); });
如果發現沒效果,可能因為頁面上ng-repeat的東西沒加載完成。可添加指令。具體解決辦法可參考我這篇文章: