角度路由器 - 使用抽象状态访问服务

时间:2017-04-05 22:07:14

标签: angularjs node.js angular-ui-router mean-stack meanjs

使用mean.js:

我有一个大的应用程序,除了办公室。每个办公室以相同的方式访问同一个应用程序,但办公室的员工只能访问与该办公室有关的信息。公司管理员可以完全访问应用程序,在办公环境之间切换。需要注意的是,办公室员工没有用户帐户(没有登录/身份验证),只有管理员的管理员帐户。

我正在探索以下列方式进行:

我创建了一个访问模块,其中包含一个存储office上下文的服务,在进行API调用时将其传递给后端。这是在从配置文件启动应用程序时设置的。

这很好,但我需要允许管理员切换办公环境。我使用链接<a ui-sref="Context({ officeID: 'x' })(在导航栏下拉列表中,可以从每个状态访问)来访问角度路由器:

.state('Context', {
        url: '/Context/:officeID',
        controller: 'ContextController',
        controllerAs: 'vm'
      });

这会将officeID传递给ContextControllerContextService.officeID会设置ContextController变量。此时,我相信我会从Context拨打api来刷新当前状态的数据以反映当前的上下文。不知道怎么做。

我觉得我在这里有一些选择,我不确定如何实施:

  • 我可以使Context州抽象,其他所有州都是孩子,但这看起来很笨重。如果这是正确的,我如何告诉当前状态刷新它的数据?
  • 我可以进入ContextService.officeID状态,设置NSString *mediaUrl = [[dict[@"tweet"][@"entities"][@"media"] objectAtIndex:0] objectForKey:@"media_url"] ,然后立即重定向回到之前的状态,进入后,应该使用新的上下文进行api调用。如果这是正确的,我该如何正确执行该重定向?

我可以完全废弃这是怎么做的,但我不知道我会从哪里开始。欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

我发现了一些感觉更优雅的东西。

我仍然使用Context路线。我已将ContextService包含在我的所有角度模块中,并在需要设置上下文时调用它。 我尝试使用$location.path(...)重定向,这是一个令人头痛的问题。使用$state.go($state.previous.state.name)可以获得一种享受。

更好的是,如果您使用依赖于解析的路线,您可以使用$state.go($state.previous.state.name, $stateParams);进一步重定向

相关问题