Angular $ stateProvider - 不匹配任何路由或“空白”#39;路线

时间:2017-06-06 02:31:32

标签: javascript angularjs angular-ui-router

我使用带有角度的$ stateProvider:

var stateConfig = function ($stateProvider, $urlRouterProvider) {

    // Redirect if no route
    $urlRouterProvider.otherwise("");

    $stateProvider.state("home.myState", {
        url: "",
        templateUrl: "/mytemplate.html",
        controller: "MyController"
    });
};

...这对于这样的.NET MVC网址没有问题(没有定义角度路由):

http://hostname/MvcController/id

问题是,有时URL将采用以下形式:

http://hostname/MvcController/id#/

...我可以改变我的状态定义:

    $stateProvider.state("home.myState", {
        url: "/",
        ...

,与新网址匹配,但不再与原始网址匹配(不包含结尾标记#')。我应该如何定义状态或配置我的路由,以便它匹配一个可以有空白'路线(即尾随'#/'),或根本没有定义路线(没有尾随'#/')

2 个答案:

答案 0 :(得分:1)

据我所知,您需要在app.config中打开HTML5模式:

app.config(["$locationProvider", function($locationProvider) {
   $locationProvider.html5Mode(true);
}]);

此外,您还必须在代码中设置基本网址:

< base href="/" >

答案 1 :(得分:1)

我需要更改为this,当没有提供路由时,将路由设置为'/'(然后状态在后缀为'/'的路由上匹配)

$urlRouterProvider.otherwise("/");

$stateProvider.state("home.myState", {
    url: "/",
    ...