2016-04-06 2 views
1

ブートストラップでangularjsアプリを開発すると、私は約束の後でウェブを生成しました。次に、リンクされた項目を持つ長いリストグループがあります。このリストはng-repeatで生成されます。宛先リンクから戻ったときにリストグループ内の位置をどうやって調べることができますか?

アイテムをクリックして戻ったとき、私はリスト内の位置を失い、リストの先頭に私を送ります。

元の位置に戻って元に戻すにはどうすればよいですか?

ここにいくつかのコード:

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

私は、リストのすべての要素にID(pos.id)を持っているが、私は、特定のIDでスクロールを配置する方法がわかりません。 URLを従来の形式(URL#id)で構築すると、何も起こりません。

宛先URLに戻ってくるためのボタンがあります。これはコードです:

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

あなたはコードをフィドルでもらえますか? – Batman

+2

次のページにリダイレクトする前に、クリックしたアイテムにIDを追加することができます。ページに戻ると、そのIDをURLに追加します。ちょっとした考え。 – induprakash

+0

@induprakash、私は各要素のIDを持っています。要素をクリックするとIDが保存されますが、IDをURLに追加すると何も起こりません。とにかくありがとう;) – MouTio

答えて

1

あなたのウェブを約束した後に生成したり、アクション(スクロール)がDOMに依存している場合、あなたが実行する必要がされた場合は基本的にhttps://stackoverflow.com/a/29760881/4679838

に解決し、同様の問題が、あります角度ダイジェストサイクル後の関数。

リストの1つの要素をクリックすると、scrollTop情報を保存する必要があります。関数の実装である

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

:あなたは先のURLから戻ったときに、その後

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

は、あなたがそれを復元する必要があり、これを行うためには、NG-クリックの動作を変更。

$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

それは私のために働く。ありがとう! – MouTio

関連する問題