以下は、angularjs-ui-bootstrapを使用した単純なページネーションのコードです。私はあまりにも大量のデータセットを使ってクライアント側にページを作っているので、ページが変更されたときにページごとのデータを取得するだけです。anglejsを使ってリロードした後に現在のページに留まるにはどうすればよいですか?
私が問題になっているのは、ページがリロードされたときです。ページングは常に最初のページにリセットされます。ページがリロードされたときに、どうすれば現在のページに残りますか?
HTML
<uib-pagination total-items="totalCount" ng-model="currentPage" ng-change="pageChanged()" items-per-page="2"></uib-pagination>
javascriptの
$scope.currentPage = $location.search().page;
getData($scope.currentPage);
$scope.pageChanged = function() {
getData($scope.currentPage);
$location.url('?page=' + $scope.currentPage);
};
function getData(pageNumber) {
if (pageNumber == null)
pageNumber = 1;
$http.get('http://localhost.angulartestapi.com/v1/AngularTestApi/getteams?pageNumber=' + pageNumber)
.success(function (data) {
$scope.teams = data.Teams;
$scope.totalCount = data.TotalCount;
}).error(function() {
alert("error");
});
は、このコードは、現在のURLに?page={currentPage}
パラメータを追加します。ページがリロードされると、保存されたページが$location.search().page
からgetData()
に、$scope.currentPage
が正しいページ番号に設定されます。しかしそれはpageChanged()
になり、$scope.currentPage
は1
にリセットされます。 EDIT
:クッキーアプローチ
だから私はこのようなクッキーにcurrentPageにを保存しようとしました:
$scope.currentPage = $cookies.get('page');
getData($scope.currentPage);
$scope.pageChanged = function() {
getData($scope.currentPage);
$cookies.put('page', $scope.currentPage);
};
ページでは、それはクッキーから保存されたページがでgetData()
になりますリロードする
$scope.currentPage
が正しいページ番号に設定されています。しかしそれは
pageChanged()
になり、
$scope.currentPage
は
1
にリセットされます。だから問題はまだ起こる。
EDIT 2:ページが$scope.currentPage
が$scope.pageChanged
に1
にリセットされリロードされたとき$scope.currentPage
ハード2
に符号化されていても
。
$scope.currentPage = 2;
getData($scope.currentPage);
$scope.pageChanged = function() {
getData($scope.currentPage);
};
FINAL EDIT:
は、現在のページに滞在する方法を見つけました。答えは以下の通りです。
「リフレッシュ」とは、リロードを意味しますか?角度モデルは、ページのリロード時に再初期化されます。 –
@NarainMittalページがリロードされたときにうん。リロードして現在のページにとどまる方法はありますか? – dmarsi