いくつかのルートが指定されています。
app.config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) {
$routeProvider.
when("/", {
templateUrl: "/ajax/home.html",
controller: "HomeController"
}).
when("/test/:id", {
templateUrl: "/ajax/test.html",
controller: "TestController",
resolve: {
data: function ($q, $http, $route) {
var deferred = $q.defer();
var params = $route.current.params;
$http({method: "GET", url: "/api/test/" + params.id + ".json"})
.success(function(data) {
deferred.resolve(data)
})
.error(function(data){
deferred.reject();
});
return deferred.promise;
}
}
});
$locationProvider.html5Mode(true);
}]);
につながる別のルートにリンクがある場合は、/test/x
正常に動作します。HTML5 モードでない場合も問題なく動作します。ただし、HTML5 モードで直接移動すると/test/x
、ルートは読み込まれず、解決されたものは実行されません。
私は AngularJS のドキュメントの多くを調べましたが、まだこれを理解できません。お願いします:(
編集:さらにテストを行いましたが、これはスラッシュが含まれるルートのみです。:id
パラメータ( など)が含まれているかどうかは問題ではないようです。(そのルート/hello
が定義されている場合) への移動は、HTML5 モードと非 HTML5 モードの両方のすべてのケースで機能します。/hello/world
常に非 HTML5 モードで機能し、リンクをクリックしてルートが別のルートから変更されたときに HTML5 モードで機能するようなものに移動します。on のときに更新する/hello/world
と、アドレス バーに移動して Enter キーを押すか、別の Web サイトからそのアドレスへのリンクをクリックすると、インデックス ページが再読み込みされますが、実際のルートは再読み込みされません。