好的,謝謝。我誤解了你。我想我現在有一個更好的理解。請糾正我,如果我錯了:
所以,你基本上試圖做一個hello
鏈接指向同一頁面內的一節。當您將網址更改爲pageUrl#hello
時,該頁面應跳轉至ID爲hello
的部分。
但問題是,既然你的部分有一個使用ngRoute
模塊的AngularJS組件,該路由功能使您的頁面重定向到pageUrl/#hello
,而不是跳躍與012的HTML部分。
這是正確的嗎?
解決方案
如果我正確理解你的問題,解決的辦法是檢查你的ng-app='appName'
屬性是在body
標籤。如果是,則將其下移到組件的父元素。
如果散列鏈接是ng-app
元素的子元素,那麼當您單擊它時,AngularJS會認爲您要重定向到另一個視圖。這是導致Home
鏈接重定向到pageUrl#/home
的原因。
<body ng-app="demoApp">
<a href="#hello">Hello</a> <!-- redirects to #/hello -->
<div id="hello"></div>
<!-- ... -->
所以,如果你把散列鏈接ng-app
元素之外,那麼它的行爲,當你點擊它的預期。
<body>
<a href="#hello">Hello</a> <!-- jumps to the 'hello' div -->
<div id="hello" ng-app="demoApp"></div>
<!-- ... -->
在頁面加載
如果你想在頁面跳轉到hello
格在頁面加載,那麼你的控制器內設置window.location = '#hello'
。然後,當您訪問pageUrl#hello
時,應出現hello
div而不是頁面的頂部。
如果您沒有控制器,或者不想使用控制器,那麼在文檔加載後,請檢查哈希URL並以編程方式進行更改。
$(document).ready(function(){
if(window.location.hash == '#hello'){
window.location = '#hello';
}
})
嗯...這是一個代碼塊。我不知道它應該如何處理鏈接到頁面特定部分的問題。 HTML元素甚至沒有標識要鏈接元素的'id'屬性。 – Quentin