Javascript angular.js将控制器合并为1

Javascript angular.js将控制器合并为1,javascript,angularjs,Javascript,Angularjs,我有一个关于将几个控制器合并为1的问题。我根据用户状态(是否登录)显示一些链接 我曾经拥有登录(http post Login)、注册、注销(http post Logout)、用户(http更新某些设置)控制器。我把它们合并成一个。这是个好决定吗 app.controller('UserCtrl', function($scope,..) { $scope.logged = state; this.login = function() { .. $scope.logge

我有一个关于将几个控制器合并为1的问题。我根据用户状态(是否登录)显示一些链接

我曾经拥有登录(http post Login)、注册、注销(http post Logout)、用户(http更新某些设置)控制器。我把它们合并成一个。这是个好决定吗

app.controller('UserCtrl', function($scope,..) {
  $scope.logged = state;
  this.login = function() {
    ..
    $scope.logged = 1;
  };
  this.logout = function() {
    ..
    $scope.logged = 0;
  };
  this.update = function() {
    ..
  };this.register..
});
该控制器也可用于其他模板或同一模板上的2x示例。是不是错了

<div ng-controller="UserCtrl as userCtrl">
    <li ng-show="logged">..</li>
</div>
<!-- some code -->
<div ng-controller="UserCtrl as userCtrl">
   <button ng-click="userCtrl.logout()">Logout</button>
</div>...etc.

  • 注销 等

    非常感谢。

    我更倾向于将控制器共享的逻辑移动到工厂中,然后将工厂拉到需要访问该逻辑的任何控制器中。但是,你所做的不是“错”,如果它有效的话,对吗?它可能不是实现它的“最佳”方式(不管怎样,它本身都是非常主观的)。所以,如果每个控制器只包含一个函数来执行HTTP请求,这不是错误的吗?我认为在控制器中发送HTTP请求是不好的做法。但是,这不是“错”。所以你们建议我把所有的东西都搬进工厂?然后控制器将只有一条线路,服务呼叫将根据需要进行。如果控制器A中需要的只是用户是否登录,那么只需将该状态存储在控制器的作用域中即可<代码>$scope.loggedIn=authService.isLoggedIn