在Angular中使用主控制器好吗?

 广东蒗缦m莎 发布于 2023-02-12 12:59

我不知道这是不是一个好习惯...我在路由配置中定义了一个控制器,但因为我HomeCtrlng-if声明中他不能听,loginSuccess所以我做了MainCtrl哪些听取loginSuccess并做出适当的反应.这段代码工作正常,但这对我来说就像是一个黑客.我应该删除MainCtrl并使其成为一项服务吗?如果是这样,一些例子真的很棒.

的index.html


    

App.js

    angular.module('myApp', [])
      .config(function ($routeProvider) {
        $routeProvider
          .when('/', {
            templateUrl: 'views/main.html',
            controller: 'HomeCtrl'
          })
          .otherwise({
            redirectTo: '/'
          });
      })
  .controller('MainCtrl', function ($scope) {
    $scope.user = false;
    $scope.isLoged = function(){
         if($scope.user){
          return true;
         }else{
          return false;
         }
    }
    $scope.$on('event:loginSuccess', function(ev, user) {
       $scope.user = user;
       $scope.$apply();
    });
  })
  .controller('HomeCtrl', function ($scope, $location) {
  //this is home controller  
  })
  .directive('signIn', function () {
    return {
      restrict: 'E',
      link: function (scope, element, attrs) {
        //go to the server and then call signinCallback();
      }
    };
  })
  .run(['$window','$rootScope','$log',function($window, $rootScope){
    $window.signinCallback = function (res) {
      if(res){
        $rootScope.$broadcast('event:loginSuccess', res);
      }
      else{
        $rootScope.$broadcast('loginFailure',res);
      }
    }; 
  }]);

m59.. 10

我用以下内容启动所有Angular项目:

可能没有必要使用"全局"控制器,但在需要时随身携带它总是很好的.例如,我在我的CMS中使用它来设置一个绑定,启动其他所有内容的加载 - 因此所有子控制器都被加载.这并不违反关注点的分离,因为全球控制器的关注点是促进其他控制器的加载.

也就是说,只要确保尽可能保持模块化/分离和可重用的东西.如果您的控制器依赖于全局控制器的存在以便运行,则存在问题.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有