$location.search で画面が更新されてしまうのがだいぶあれだったのでないわけないだろうと探したらやっぱりあった。
$routeProvider#when で reloadOnSearch に false を指定すればいいらしい。 http://docs.angularjs.org/api/ng.$routeProvider
このあたりのワードで検索するとよく出てくる locationChangeStart とか routeChangeStart あたりで調べててだいぶはまった。
app.js
angular.module("myApp", [])
.config(function($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "main.html",
controller: "MainCtrl",
reloadOnSearch: false
});
});
サンプル
クエリパラメータに状態を保持しつつ画面遷移しない pagination 実装
http://plnkr.co/J6zUcoi7fxLnr4BuYxI8