2016-04-06 3 views
1

Entwicklung einer AngularJs App mit Bootstrap, ich habe ein Web nach einem Versprechen generiert. Dann gibt es eine lange Listengruppe mit verknüpften Elementen. Diese Liste wird mit ng-repeat generiert.Wie kann ich die Position in einer Listengruppe beibehalten, wenn ich von einem Ziellink zurückgehe?

Wenn ich auf ein Element klicke und dann zurück gehe, habe ich die Position verloren, an der ich in der Liste war, und sie schickt mich an den Anfang der Liste.

Wie kann ich zurückgehen und die Position wiederherstellen, wo ich war?

Hier einige Code:

<div class="list-group">   
    <a id="{{pos.id}}" class="list-group-item" bindonce ng-repeat="pos in elements" ng-click="go('/otherPlace/{{pos.id}}')"> 
    <h4 class="list-group-item-heading" bo-bind="pos.id"></h4> 
    <span class="list-group-item-text" bo-bind="pos.description"></span> 
    </a> 
</div> 

Ich habe die ID (pos.id) in jedem Element der Liste, aber ich weiß nicht, wie die Rolle in einer bestimmten ID zu setzen. Wenn ich die URL im traditionellen Format (URL # id) erstelle, passiert nichts.

An der Ziel-URL gibt es eine Schaltfläche für die Rückkehr. Dies ist der Code:

$scope.returnToMainPage(){ 
    $window.history.back(); 
} 
+1

können Sie Ihren Code in einer Geige geben? – Batman

+2

Sie können versuchen, dem angeklickten Element eine ID hinzuzufügen, bevor Sie zur nächsten Seite weiterleiten. Und wenn Sie auf die Seite zurückkehren, hängen Sie diese ID an die URL an. Nur ein Gedanke. – induprakash

+0

@induprakash, ich habe eine ID für jedes Element. Wenn ich auf ein Element klicke, speichere ich die ID, aber wenn ich die ID zur URL hinzufüge, passiert nichts. Danke trotzdem;) – MouTio

Antwort

1

Es gibt ein ähnliches in https://stackoverflow.com/a/29760881/4679838

gelöstes Problem Grundsätzlich, wenn Ihre Web nach einem Versprechen oder wenn die Aktion (Scroll) erzeugt wird, beruht auf dem DOM, müssen Sie ausführen Ihre Funktion nach einem eckigen Digest-Zyklus.

Wenn Sie auf ein Element der Liste klicken, müssen Sie die scrollTop-Informationen speichern. Um dies zu tun, um das Verhalten ng-Klick ändern:

ng-click="saveScrollTopAndGoToURL ('/otherPlace/{{pos.id}}')" 

, dass die Umsetzung der Funktion ist:

$scope.saveScrollTopAndGoToURL = function (destinationUrl) 
{ 
    $rootScope.scrollTop = document.body.scrollTop; 
    $location.path(destinationUrl); 
} 

Dann, wenn Sie von der Ziel-URL zurückkehren, müssen Sie es wiederherstellen .

$scope.returnAndRestoreScrollTop = function() { 
    $window.history.back();  
    $timeout(function() { 
     document.body.scrollTop = $rootScope.scrollTop; 
    }, 500, false); // There is a 500 ms delay before executing the function. 
}; 
+0

Das funktioniert bei mir. Vielen Dank! – MouTio

Verwandte Themen