我正在构建一个使用标签式导航的AngularJS
应用(使用router-ui
)。例如,用户页面将包含以下选项卡:
active
现在,我正在使用名为entityIdPersistenceService
的服务来记住在列表标签上选择的用户的ID。在我的路线中,我正在执行类似下面的操作来通知所选userId的子选项卡(因此他们可以获取必要的数据),但是看起来很多重复的代码。有没有更好的方法将我选择的ID提供给所有其他标签?
resolve: {
entityId: function(entityIdPersistenceService) {
return entityIdPersistenceService.getId();
}
}
似乎有很多重复的代码。我将它添加到父状态,但看起来代码只在父状态上运行一次,而不是在每个子状态更改时运行。
有没有更好的办法?理想情况下,id喜欢将其置于父状态并让它在每个路径change.n
运行答案 0 :(得分:1)
与用户相关的所有页面都应在URL和路径参数中的某处具有UserId:
.state('user.accountDetails', {
url: "/users/{userId}/account",
templateUrl: "..."
})
.state('user.contactDetails', {
url: "/users/{userId}/contact",
templateUrl: "..."
})
通过这种方式,UserId将存储在url而不是服务中,并且每个子控制器都可以通过$ stateParams.userId
来获取它。