angularjs路由在没有最后斜杠/

时间:2016-04-07 06:59:13

标签: angularjs angular-routing

我已经以这种方式配置$routeProvider

miNgAppplication.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
        .when("/", {
            templateUrl: "Base/FirstPage",
            controller: "miNgControllerFirstPage"
        })
}]);

当我插入带有最终斜杠的网址时,这会有效,例如" http://localhost/myApp/"。它增加了URl a"#/"并显示正确的内容(最终网址为" http://localhost/myApp/#/")
当我不使用斜线时,它不起作用,基本上是因为它错误地更改了URL " http://localhost/myApp" - > " http://localhost/myApp#/"

我该怎么办?我是否错误地使用了第一个when参数来定义第一页?或者我需要做一些修正吗?

我已经尝试添加$urlMatcherFactoryProvider.strictMode(true);但它无效(不确定我是否正确,第一行变为miNgAppplication.config(['$routeProvider', '$urlMatcherFactoryProvider', function ($routeProvider, $urlMatcherFactoryProvider) {,对吧?)。

2 个答案:

答案 0 :(得分:1)

当没有匹配时,使用otherwise方法设置默认网址。

miNgAppplication.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
        .when("/", {
            templateUrl: "Base/FirstPage",
            controller: "miNgControllerFirstPage"
        });
    $routeProvider.otherwise('/'); // <-- this should take the user to the first page.
}]);

答案 1 :(得分:0)

我找不到合适的解决方案。我希望有人可以给我一个提示,同时我解决了这个(丑陋的)方式。基本上我会听$ route事件并在必要时重定向。

miNgAppplication.run(function ($rootScope) {
    $rootScope.$on("$routeChangeError", function (event, next, current) {
        if (miLib.endsWith(window.location.href, "#/") && !miLib.endsWith(window.location.href, "/#/")) {
            event.preventDefault();
            var newLink = window.location.href.substr(0, window.location.href.lastIndexOf("#/")) + "/#/";
            console.clear();
            window.location.href = newLink;
        }
    });
});