2016-04-06 20 views
1

Bootstrap ile bir angularjs uygulaması geliştirmek, Bir söz verdikten sonra bir web var. Ardından, bağlantılı öğeler içeren uzun bir liste grubu vardır. Bu liste ng-tekrarı ile üretilir.Hedef gruptan geri döndüğümde bir liste grubundaki konumu nasıl yönetebilirim?

Bir öğeye tıklayıp geri döndüğümde, listede olduğum yeri kaybettim ve listenin en üstüne gönderdim.

Olduğum yeri nasıl geri alabilir ve geri yükleyebilirim? İşte

bazı kod:

<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> 

Ben listenin her elemanda kimliğini (pos.id) var, ama belirli bir kimliği içinde kaydırma koymak nasıl bilmiyorum. URL'yi geleneksel formatla (URL # id) oluşturursam hiçbir şey olmuyor.

Hedef URL'de geri dönmek için bir düğme vardır. Bu kodu verilmiştir:

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

Kodunuzu bir kemanda verebilir misiniz? – Batman

+2

Bir sonraki sayfaya yönlendirmeden önce tıklanan öğeye bir kimlik eklemeyi deneyebilirsiniz. ve sayfaya geri döndüğünüzde, bu kimliği URL'ye ekleyiniz. Sadece bir düşünce. – induprakash

+0

@induprakash, Her öğe için bir kimliğim var. Bir öğeyi tıklattığımda kimliği saklıyorum, ancak kimliği URL'ye eklediğimde hiçbir şey olmuyor. Yine de teşekkürler;) – MouTio

cevap

1

web eylem (kaydırma) bir söz sonra veya eğer hasıl edilmesi halinde,

Temelde https://stackoverflow.com/a/29760881/4679838 çözülmesi benzer sorun var DOM dayanır, sen yürütmek zorunda açısal bir sindirim döngüsünden sonra fonksiyonunuz.

Listenin bir öğesinde tıklattığınızda, scrollTop bilgisini kaydetmeniz gerekir. fonksiyonun uygulamasıdır

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

: Eğer hedef URL'den döndüğünüzde, Sonra

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

, bunu geri yüklemek zorunda Bunu yapmak için, ng tıklama davranışını değiştirmek .

$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

Bu benim için çalışıyor. Teşekkürler! – MouTio

İlgili konular