两个AngularJS控制器具有相同的逻辑

时间:2017-05-25 12:31:59

标签: angularjs controller

我有两个div,每个div都需要一个控制器来处理其中的活动。两个控制器当然都有不同的名称。

这种情况有问题,因为它需要维护两个相同的代码片段。

我正在考虑两种选择,我正在征求意见:

  1. 公共代码部署到一个单独的文件中,使用jQuery,文件包含到两个控制器中,

  2. 使用一个函数创建一个新文件,该函数将接收与控制器相同的参数,并且包含当前托管在两个控制器中的整个逻辑。然后,只需从两个控制器中调用此函数。

  3. 在第二个选项中,控制器的主体将成为单个语句,即调用新函数。

    从我发现的帖子看,第一个选项确实有效。我的问题是(在我进行重大变更和测试之前):第二种选择是否也能正常运作?如果是,它是否比第一个更好,相当或更差?

    修改

    虽然如上所述,实际代码与我的问题无关,但我添加了一组样本来说明我的问题,尤其是第二个选项。

    所以这是最初的安排:

    控制器1

    myApp.controller("First_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
    
       $scope.Do_Something = function () {
          // some code here
       }
    
    }
    

    控制器2

    myApp.controller("Second_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
    
       $scope.Do_Something = function () {
          // some code here
       }
    
    }
    

    想法是将其转换为:

    控制器1 - 新

    myApp.controller("First_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
    
       Common_Function($rootScope , $scope) ;
    
    }
    

    控制器2 - 新

    myApp.controller("Second_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
    
       Common_Function($rootScope , $scope) ;
    
    }
    

    其中:

    Common_Function = function ($rootScope , $scope) {
    
       $scope.Do_Something = function () {
          // some code here
       }
    
    }
    

0 个答案:

没有答案