操作ごとに個別の URL を使用することをお勧めします (直接リンクを有効にするため)。あなたが提案するものはうまく見えます。
AngularJS では、$route
サービスをディレクティブと組み合わせて使用しngView
て、操作ごとに適切なテンプレートをロードし、ブラウザーの場所と履歴の仕組みを処理できます。
AngularJS チュートリアルのステップ 7では、ここで説明する方法でビュー、ルーティング、およびテンプレートを使用する例を示しています。以下は、例の簡略化されたバージョンです。
ルートを定義する
メイン アプリケーション スクリプト (例: app.js ) で:
angular.module('AthletesApp', []).
config(['$routeProvider', function($routeProvider, $locationProvider) {
// Configure routes
$routeProvider.
when('/athletes', {templateUrl: 'partials/athletes-list.html', controller: AthleteListCtrl}).
when('/athletes/:athleteId', {templateUrl: 'partials/athlete-detail.html', controller: AthleteDetailCtrl}).
when('/athletes/:athleteId/edit', {templateUrl: 'partials/athlete-edit.html', controller: AthleteEditCtrl}).
when('/athletes/:athleteId/new', {templateUrl: 'partials/athlete-new.html', controller: AthleteNewCtrl}).
otherwise({redirectTo: '/athletes'});
// Enable 'HTML5 History API' mode for URLs.
// Note this requires URL Rewriting on the server-side. Leave this
// out to just use hash URLs `/#/athletes/1/edit`
$locationProvider.html5Mode(true);
}]);
URL の「HTML モード」も有効にします。以下の注を参照してください。
ngView
2. HTML にディレクティブを追加する
メインのindex.htmlで、選択した部分テンプレートを全体のレイアウトのどこに配置するかを指定します。
<!doctype html>
<html ng-app="AthletesApp">
...
<!-- Somewhere within the <body> tag: -->
<div ng-view></div>
...
</html>
3. テンプレートとコントローラーを作成する
次に、操作ごとに部分ビュー テンプレートと対応するコントローラーを作成します。アスリートの詳細ビューの例:
partials/athelete-detail.html:
<div>
... Athete detail view here
</div>
アスリート詳細Ctrl.js:
angular.module('AthletesApp').controller('AtheleteDetailCtrl',
function($scope, $routeParams) {
$scope.athleteId = $routeParams.athleteId;
// Load the athlete (e.g. using $resource) and add it
// to the scope.
}
:athleteId
サービスを介してルート パラメーター (ルート構成で使用して定義) にアクセスできます$routeParams
。
4. リンクを追加する
最後のステップは、HTML にリンクとボタンを実際に配置して、さまざまなビューにアクセスすることです。標準の HTML を使用して、次のような URL を指定するだけです。
<a href="/athletes/{{athleteId}}/edit">Edit</a>
注: 標準とハッシュ URL の比較
HTML5 History API をサポートしていない古いブラウザーでは、URL は と のようにhttp://example.com/#/athletes
なりhttp://example.com/#/athletes/1
ます。
この$location
サービス ( によって自動的に使用される$route
) がこれを処理できるため、最新のブラウザーではきれいな URL が得られ、古いブラウザーではハッシュ URL にフォールバックされます。上記のようにリンクを指定$location
し、古いクライアント用にリンクを書き換えます。唯一の追加要件は、すべての URL がアプリのメインの index.html に書き換えられるように、サーバー側で URL 書き換えを構成することです。詳細については、AngularJS の $location ガイドを参照してください。