Ok, danke. Ich habe dich missverstanden. Ich denke, ich habe jetzt ein besseres Verständnis. Bitte korrigieren Sie mich, wenn ich falsch liege:
Sie versuchen also im Wesentlichen, einen hello
Link zu erstellen, der auf einen Abschnitt innerhalb derselben Seite verweist. Wenn Sie die URL in pageUrl#hello
ändern, sollte die Seite zu dem Abschnitt mit der ID hello
springen.
Aber das Problem ist, dass seit dem Abschnitt eine AngularJS Komponente hat, die das ngRoute
Modul verwendet, die Routing-Funktionalität Ihrer Seite macht zu pageUrl/#hello
umleiten, anstatt mit den id='hello'
auf den HTML-Abschnitt springen.
Ist das korrekt?
Lösung
Wenn ich Ihr Problem richtig zu verstehen, ist die Lösung zu überprüfen, ob Ihr ng-app='appName'
Attribut auf den Tag body
ist. Wenn dies der Fall ist, verschieben Sie es nach unten zum übergeordneten Element Ihrer Komponente.
Wenn ein Hash-Link ein Kind des Elements ng-app
ist, dann denkt AngularJS, wenn Sie darauf klicken, dass Sie in eine andere Ansicht umleiten möchten. Dies führt dazu, dass der Link Home
zu pageUrl#/home
umgeleitet wird.
<body ng-app="demoApp">
<a href="#hello">Hello</a> <!-- redirects to #/hello -->
<div id="hello"></div>
<!-- ... -->
Also, wenn Sie den Hash-Link außerhalb des ng-app
Element setzen, dann wird es wie erwartet verhalten, wenn Sie darauf klicken.
<body>
<a href="#hello">Hello</a> <!-- jumps to the 'hello' div -->
<div id="hello" ng-app="demoApp"></div>
<!-- ... -->
beim Laden der Seite
Wenn Sie die Seite wollen die hello
div auf Seite laden springen, dann setzen Sie window.location = '#hello'
in Ihrem Controller. Dann, wenn Sie pageUrl#hello
besuchen, sollte das hello
div anstelle des oberen Rands der Seite erscheinen.
Wenn Sie keinen Controller haben oder keinen verwenden möchten, überprüfen Sie nach dem Laden des Dokuments die Hash-URL und ändern Sie sie programmgesteuert.
$(document).ready(function(){
if(window.location.hash == '#hello'){
window.location = '#hello';
}
})
Nun ... das ist ein Stück Code. Ich habe keine Ahnung, wie es mit dem Problem der Verbindung zu einem bestimmten Teil der Seite umgehen soll. Keines der HTML-Elemente hat sogar das Attribut 'id', das das Element identifiziert, mit dem es verknüpft ist. – Quentin