$ location.pathを使用し、ngViewのリロードを使用しないAngularJSページング
Angularjs Paging With Location
解決:
パスを更新する代わりに、クエリパラメータをページ番号で更新するだけです。
クエリパラメータの変更を無視するようにルートを設定します。
.... $ routeProvider.when( '/ foo'、{...、reloadOnSearch:false})...。そしてあなたのアプリのアップデートで$ location with:
... $ location.search( 'page'、pageNumber); ..。
このブログ投稿から:
デフォルトでは、すべての場所の変更はルーティングプロセスを経て、角度ビューが更新されます。
ただし、これを短絡する簡単な方法があります。 Angularは場所の変更を監視します(場所バーに入力するか、リンクをクリックするか、次の方法で場所を設定するかどうかに関係なく、$ location.path())。この変化を感知すると、イベントをブロードキャストし、$ locationChangeSuccessを実行し、ルーティングプロセスを開始します。イベントをキャプチャし、ルートを以前の状態にリセットします。
function MyCtrl($ route、$ scope){var lastRoute = $ route.current; $ scope。$ on( '$ locationChangeSuccess'、function(event){$ route.current = lastRoute;}); }
私の解決策は、$ routeChangeStartを使用することでした。これにより、「次の」ルートと「最後の」ルートが得られ、$ locationChangeSuccessのように追加の変数を必要とせずにそれらを比較できます。
利点は、次のような「次の」ルートと「最後の」ルートの両方で「params」プロパティにアクセスできることです。'/ property / value' URLスタイルを使用していて、もちろん使用している場合は、next.params.yourproperty$ location.urlまたは$ location.pathの代わりにURLを変更する'?property = value'のURLスタイルに依存する$ location.search()。
私の場合、それだけでなく、ルートが変更されないようにするために使用しました。コントローラーは変更されませんでした。
$ scope。$ on( '$ routeChangeStart'、function(e、next、last){if(next。$$ route.controller === last。$$ route.controller){e.preventDefault(); $ route。 current = last。$$ route; //ここでやりたいことは何でもします!}});個人的には、AngularJSがそれを制御する方法を提供する必要があると感じています。現在、ブラウザーの場所を変更するたびにルートを変更することを想定しています。