javascript - Angular UI-Router 和嵌套状态

标签 javascript angularjs routes angular-ui-router angularjs-routing

我正在尝试让我的嵌套状态正常工作,但我不知道我做错了什么。

Here is my simple example on plunkr

正文:

<div class="site_container" ui-view></div> 

我想显示我的站点容器,它应该始终显示:

<header class="main_header">
    <h1>My header</h1>
</header>

<main  ui-view></main>

在 -tag 中我想在一些子状态之间切换,举个简单的例子我只想显示一个 :

<h2>My content</h2>

因此,我想要:

<div class="site_container" ui-view>
    <header class="main_header">
        <h1>My header</h1>
    </header>

    <main  ui-view>
        <h2>My content</h2>
    </main>
</div> 

这是我的配置:

angular.module('myApp').config([
'$stateProvider',
'$urlRouterProvider',
function (
    $stateProvider,
    $urlRouterProvider
    ) {

    $stateProvider

    .state('main', {
        abstract: true,
        url: '/',
        templateUrl: 'app.html'
    })
    .state('main.child', {
        url: '/child',
        templateUrl: 'child.html',
    })

    // if none of the above states are matched, use this as the fallback
    $urlRouterProvider.otherwise('/child');
}]);

你能告诉我,我做错了什么吗?

最佳答案

由于您的 abstract 状态在 URL 中有 /,这意味着当您创建子状态时,它可以有带有 /child 的 URL将被视为//child

根据您当前的代码,它应该是 $urlRouterProvider.otherwise('//child');

Plunkr

但从技术上讲,为了使 URL 对用户友好,您应该使用空白 ('') URL 声明抽象状态

.state('main', {
    abstract: true,
    url: '', //<--changed to blank URL
    templateUrl: 'app.html'
})

然后你可以让你的代码像你发布的问题一样工作

Demo Plunkr

关于javascript - Angular UI-Router 和嵌套状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027840/

相关文章:

java - AngularJS - 没有 Web 服务器的独立 - 调用 CXF REST 服务时出错

angularjs - 为什么我的对象在 promise 后会丢失引用?

javascript - 如何在codeigniter中将2个或更多数据传递给ajax

javascript - ItemView 不会呈现

Javascript:使用嵌套 for 循环将嵌套数组转换为单个数组

javascript - 使用 JavaScript 获取子对象的值

javascript - Uncaught Error : [$injector:unpr] Unknown provider:

ruby-on-rails - 基于虚拟主机的 Rails 路由(Host HTTP header)

javascript - Angular ui-router 解析中的动态依赖注入(inject)

c# - 在 ASP.NET WebApi 中,为什么 RouteData 的值类型是 "object"而不是 "string"