我指定了几条路线:
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 模式下时它也可以正常工作。但是,当您直接导航到/test/x
在 HTML5 模式下,路由不会加载,并且解析中的任何内容都不会执行。
我已经浏览了很多 AngularJS 文档,但仍然无法弄清楚这一点。请:(
编辑:我已经做了更多测试,这仅适用于其中有斜杠的路线。是否有参数似乎并不重要(例如:id
)是否在其中。即将/hello
(如果定义了该路由)适用于 HTML5 和非 HTML5 模式下的所有情况。去类似的事情/hello/world
始终在非 HTML5 模式下工作,并且当通过单击链接从另一个路由更改路由时,在 HTML5 模式下工作。开启时清爽/hello/world
,转到地址栏并按 Enter 键或单击从另一个网站指向它的链接会导致它重新加载索引页面,但不会重新加载实际路线。
Adding <base href="/" />
to the <head>
部分是修复,具体取决于您遇到的问题。
(这就是我的答案,所以我想确保对于遇到此问题的其他人来说更加明显)
感谢@user27766 指出这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)