gpt4 book ai didi

javascript - AngularJS - 有条件地为路由设置 Controller

转载 作者:行者123 更新时间:2023-11-30 00:10:24 25 4
gpt4 key购买 nike

我正在使用 native AngularJS 路由器,想知道是否有一种方法可以有条件地将 Controller 分配给路由。例如,假设我有三种用户类型:

  • 客人
  • 用户
  • 系统管理员

当他们来到主页时,我希望能够根据用户类型分配不同的 Controller 。所以我会注册三个 Controller :guestHomeCtrluserHomeCtrlsystemAdminHomeCtrl

我想象的是这样的:

$routeProvider
.when( '/' , {
controller: getHomeCtrl(),
controllerAs: 'homeCtrl'
})

我知道我可以只传入已注册 Controller 的字符串,但主要问题是能够找出登录的用户类型。我有一个通常跟踪的 userService其中,但似乎我无法从设置路线的地方访问它。还是我弄错了?

任何方向都会有很大帮助。

最佳答案

我建议将 userService 与单个 Controller 一起使用。通读下面的页面,特别是 resolve 参数。

https://docs.angularjs.org/api/ngRoute/provider/ $路由提供者

这篇博文还介绍了如何使用 resolve。

http://odetocode.com/blogs/scott/archive/2014/05/20/using-resolve-in-angularjs-routes.aspx

尝试将您需要的特定函数或变量发送到 Controller 。我使用了 userService.User.userAccountStatus,但这实际上取决于您的服务文件中的设置。

$routeProvider
.when( '/' , {
controller: HomeCtrl,
controllerAs: 'HomeCtrl',
resolve: {
userService: function(userService) {
return userService.User.userAccountStatus();
}
}
})

我使用 ngInject 来注入(inject)依赖项,但我假设您已经掌握了向 Controller 提供服务的要点。

angular
.module('app')
.controller('HomeCtrl', HomeCtrl)

/** @ngInject */
function HomeCtrl($scope, $log, $state, userService) {
}

如果您需要,我可以提供更多示例。

关于javascript - AngularJS - 有条件地为路由设置 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36727809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com