私は AngularJS + UI Bootstrapによって提供される「モーダル」ディレクティブを使用しています。モーダル ダイアログ ボックスはうまく機能しますが、1 つ問題があります。それは、URL が変更されないことです。
たとえば、私の AngularJS アプリには、"/people" のルートが設定されており、人のリストが表示されます。ユーザーが人をクリックすると、モーダル ダイアログ ボックスが表示され、詳細情報が表示されます。実際に $routeProvider にコントローラーを再実行させずに URL を変更する方法を見つけようとしています。
たとえば、ルートに次のようなものを含めることができます。
$routeProvider.
when('/people', {controller: PeopleCtrl, templateUrl: 'templates/people.html'}).
when('/people/:personId', {controller: PeopleCtrl, templateUrl: 'templates/people.html'}).
次に、PeopleCtrl で次のことができます。
if ($routeParams.personId) {
$scope.editPerson({id: $routeParams.personId});
}
これは基本的に、人の行を ng-click でバインドするのと同じ関数を呼び出します。これは、アプリが /people/123 のような URL に応答できるようにするという点では機能しますが、URL を /people から /people/123 にジャンプさせ、モーダルとして /people に戻す方法がわかりません。ダイアログボックスが開閉します。
明らかに、私は単に $location.path("/people") を呼び出すことができますが、それに関する問題は PeopleCtrl が再実行されることであり、モーダルの「背後」の状態を保持する必要があるため、それを避けたいと考えています。
つまり、通常の $routeProvider の変更が検出されずに URL/場所を変更する方法を探しています。
ありがとう!