我坚持了一段时间。我对ui-router的视图嵌套非常新。我正在尝试在“/”访问时路由到默认值。这是我的js文件:
angular
.module("app")
.config(function($stateProvider,$locationProvider,$urlRouterProvider){
$urlRouterProvider.otherwise("dashboard");
$stateProvider
.state("home",{
url: "/",
templateUrl: "views/home/home.html"
})
.state("login",{
url: "/login",
templateUrl: "views/login/login.html"
})
.state("home.dashboard",{
url: "/dashboard",
templateUrl: "views/home/dashboard.html"
});
$locationProvider.html5Mode(true);
});
我不知道为什么那不起作用。每次我尝试加载localhost
时,都不会localhost/dashboard
。相反,它会停止加载直到home.html
。请帮助我学习新的东西并表明我的错误。
答案 0 :(得分:0)
请参阅此working plunker。我关闭了HTML5模式,因为它阻止了plunker正常工作。
您的代码的主要问题是您在此声明中重定向到/dashboard
:
$urlRouterProvider.otherwise("/dashboard");
请注意,home.dashboard
是home
的子状态。因此,默认情况下,URL应以home
状态的URL开头。所以正确的陈述是:
$urlRouterProvider.otherwise("/home/dashboard");
如果您不想要上述/home
,则需要将home.dashboard
州的路线配置更改为:
.state("home.dashboard", {
url: "^/dashboard",
templateUrl: "dashboard.html"
});
前面的^
使URL绝对,并使其不受任何前面的父状态URL的影响。现在,语句$urlRouterProvider.otherwise("/dashboard");
将按原样运行。
完成此更改后,代码可以在视图中加载模板home.html
。此外,您在ui-view
中没有任何home.html
指令可以加载home.dashboard
的模板。因此,我在<div ui-view></div>
中添加了home.html
元素,以使其正常运行。