解决父状态不会在每个子状态更改上运行

时间:2015-12-26 08:57:16

标签: angularjs

我正在构建一个使用标签式导航的AngularJS应用(使用router-ui)。例如,用户页面将包含以下选项卡:

  • 列表(将始终是主要标签并列出所有用户。在此标签上选择用户后,其余用户将来active
  • 帐户明细
  • 联系方式
  • 注释

现在,我正在使用名为entityIdPersistenceService的服务来记住在列表标签​​上选择的用户的ID。在我的路线中,我正在执行类似下面的操作来通知所选userId的子选项卡(因此他们可以获取必要的数据),但是看起来很多重复的代码。有没有更好的方法将我选择的ID提供给所有其他标签?

    resolve: {
        entityId: function(entityIdPersistenceService) {
            return entityIdPersistenceService.getId();
        }
    }

似乎有很多重复的代码。我将它添加到父状态,但看起来代码只在父状态上运行一次,而不是在每个子状态更改时运行。

有没有更好的办法?理想情况下,id喜欢将其置于父状态并让它在每个路径change.n

运行

1 个答案:

答案 0 :(得分:1)

与用户相关的所有页面都应在URL和路径参数中的某处具有UserId:

.state('user.accountDetails', {
  url: "/users/{userId}/account",
  templateUrl: "..."
})
.state('user.contactDetails', {
  url: "/users/{userId}/contact",
  templateUrl: "..."
})

通过这种方式,UserId将存储在url而不是服务中,并且每个子控制器都可以通过$ stateParams.userId

来获取它。