【发布时间】:2014-09-25 09:59:54
【问题描述】:
在过去的 9 个小时里,我一直在尝试使用 Angular 和 ui-router 实现一个带有标签的页面。
我有以下:
.state('someAbstractParentRoot', {
'abstract': true,
url: '/{id}',
templateUrl: '/admin/templates/rootTemplate',
controller: 'someController1',
data: {
breadcrumbLabel: 'Details'
}
})
.state(someAbstractParentRoot.child, {
url: '',
views: {
details: {
templateUrl: '/admin/templates/details',
controller: 'someController2'
},
videos: {
templateUrl: '/admin/templates/videos',
controller: 'someController3'
},
logs: {
templateUrl: '/admin/templates/logs',
controller: 'someController4',
},
notes: {
templateUrl: '/admin/templates/notes',
controller: 'someController5'
}
}
})
使用引导程序,我只需显示我需要的模板。
因此,当显示视频选项卡时,网址类似于:localhost:8080/users/1#videos。
所以,这一切都很好,直到我需要将此链接发送给某人,因为当我这样做时,详细信息选项卡会自动打开。我不能只在 div 元素上切换类,因为一些选项卡正在使用 ng-if,所以 jquery 没有拾取它应该获取的所有 html,可能是因为 angulars 摘要循环(它可以用 setTimeout 解决,但我我试图避免这种情况)。
有谁知道我如何使用 ui-router 来定义一个支持直接链接的选项卡? 一些例子将不胜感激。 注意:我需要抽象的父状态。
ui-router中的url可以有'#'符号吗?
【问题讨论】:
-
对于抽象男性 url "/tabs" 和对于 chols state "/:id"
-
也看看我为其他主题制作的标签的实现。 jsfiddle.net/Serhioromano/t7s3jrg4
-
谢谢,这给了我一个想法。这可能是一个愚蠢的问题,但是更改 url 中的参数会触发页面重新加载,不是吗?
-
没有。 Angular 是 SPA,页面只加载一次。它只会加载选项卡的部分内容,并且只会加载一次。并且您在 paranet 抽象范围中定义的所有 $scope 都会被记住。您可以在输入中输入文本,然后切换选项卡,您可以看到文本在那里。
标签: angularjs tabs angular-ui-router