当直接转到 URL 时,AngularJS 路由路径中的参数不会以 HTML5 模式加载

标签 angularjs angularjs-routing

我指定了几条路线:

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 文档,但仍然无法弄清楚。请LZ:(

编辑:我做了更多的测试,这仅适用于其中有斜线的路线。其中是否有参数(如 :id )似乎并不重要。前往 /hello (如果定义了该路由)适用于 HTML5 和非 HTML5 模式下的所有情况。去类似 /hello/world始终在非 HTML5 模式下工作,当通过单击链接从另一条路线更改路线时,则在 HTML5 模式下工作。开启时刷新 /hello/world ,转到地址栏并按 Enter 键或单击其他网站指向它的链接会导致它重新加载索引页面,但不会重新加载实际路线。

最佳答案

添加 <base href="/" /><head>部分是一个修复,具体取决于您遇到的问题。

(这是我的答案,所以我想确保让其他遇到这个问题的人更明显)

感谢@user27766 指出。

关于当直接转到 URL 时,AngularJS 路由路径中的参数不会以 HTML5 模式加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17472224/

相关文章:

javascript - ng-model 不更新值

javascript - AngularJS:如何激活 ngRepeat 中的第一个非零项?

javascript - 在 Angular1 中使用 $routeProvider 时如何正确跨页面加载 javascript

angularjs - 使用 AngularJS 路由时有没有办法预加载模板?

AngularJS (Restangular) : Making a promise block? 需要使用它来验证 token

javascript - 使用 $http.get 调用响应初始化 AngularJS 常量

javascript - ng-pattern 与脚本验证

javascript - AngularJS : ng-repeat over custom directive with isolate scope

javascript - Angularjs 重新渲染整个页面 [ionic]

javascript - AngularJS - 在应用程序启动之前处理路由