$ 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がそれを制御する方法を提供する必要があると感じています。現在、ブラウザーの場所を変更するたびにルートを変更することを想定しています。