UI-Router应该只改变部分

时间:2015-10-19 19:10:42

标签: angularjs angular-ui-router

我正在使用ui-router构建一个角度应用程序,有一点我无法弄清楚。

左侧有一个侧边栏,还有一个内容区域。两者都由自己的控制器控制。当我在侧边栏中选择项目时,内容区域应该更新,但侧边栏必须保持其状态。它的作用是侧边栏在选择项目时也会重新加载。

app.coffee:

$urlRouterProvider.otherwise "/items/near/map"

$stateProvider
.state('items',
    url: '/items'
    abstract: true
    templateUrl: "items.html"
)
.state('items.near',
    url: '/near'
    abstract: true
    views:
        'sidebar@items':
            templateUrl: 'items-near-list.html'
            controller: 'ItemsNearListCtrl'
)
.state('items.near.map',
    url: '/map'
    views:
        'content@items':
            templateUrl: 'items-near-map.html'
            controller: 'ItemsNearMapCtrl'
)
.state('items.near.detail',
    url: '/detail/:id'
    views:
        'content@items':
            templateUrl: 'item-detail.html'
            controller: 'ItemsNearDetailCtrl'
)

items.html:

<div>
    <div ui-view="sidebar"></div>
    <div ui-view="content"></div>
</div>

一个可能相关的问题是,如果我直接输入详细视图状态(/items/near/detail/x/),侧边栏甚至不会加载任何内容。知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

嗯,我从未使用绝对@语法作为视图名称,但在查看文档之后,似乎这可能是问题所在。

请尝试不使用@items或使用完整的状态/视图组合,例如sidebar@items.nearcontent@items.near.mapcontent@items.near.detail