角度控制器结构变化

时间:2016-06-08 13:57:56

标签: angularjs controller

我有一个来自前一个开发项目的天赋,他一直在以我不熟悉的风格建造。

  1. 整个事情都包含在一个匿名函数中 立即执行。
  2. 首先声明并注入控制器,然后调用 功能。
  3. 所有控制器都在同一个文件中。
  4. cartController.js:

    (function() {
        'use strict';
    
        angular
            .module('App')
    
            .controller('cartController', cartController)
            .controller('masterCartonModalInstanceController', masterCartonModalInstanceController)
            .controller('summaryModalInstanceController', summaryModalInstanceController)
            // more controllers ...
    
        cartController.$inject = ['$http', '$stateParams', '$location', '$uibModal', '$log', 'toastr', 'DTOptionsBuilder', 'DTColumnDefBuilder', 'Cart', 'CartObservable'];
    
        function cartController($http, $stateParams, $location, $uibModal, $log, toastr, DTOptionsBuilder, DTColumnDefBuilder, Cart, CartObservable) {
           var vm = this;
           ...
        }
    
        masterCartonModalInstanceController.$inject = ['$uibModal', '$uibModalInstance', 'cart'];
    
        function masterCartonModalInstanceController($uibModal, $uibModalInstance, cart) {
           var vm = this;
           ...
        }
    })();
    

    这就是我所熟悉的:

    app.js

    var portalApp = angular.module("portalApp");
    

    editController.js

    var portalApp = angular.module("portalApp");
    
    portalApp.controller('editController', ['$scope', '$http', '$filter', function($scope, $http, $filter) {
        'use strict';
    
        var vm = this;
    

    我的问题是:

    1. 这个人这样做是否有效?
    2. 他是否以与我习惯的方式相同的方式做到了?
    3. 我可以/我应该更改他的实现,因为我的标准/可读性更高吗?
    4. 他正在做更复杂的事情(因此答案是肯定/否/否)?

1 个答案:

答案 0 :(得分:0)

这两个代码都可以正常工作。但不是在缩小的情况下。

当您缩小JS时,它还会更改变量的名称并使其尽可能小。 例如:

    app.controller('myCtrl',function($scope){
    });

如果您缩小此代码,$ scope将更改为其他名称,这将是您的控制器的未知依赖项,因此此代码将会生效。

但是如果你写这样的代码

 app.controller('myCtrl',['$scope',function($scope){
        }]);

并缩小这段代码代码将如下所示:

app.controller('myCtrl',['$scope',function(a){
            }]);

它没有重命名为单引号中提到的$scope,因为minifier将其理解为值。你的控制器取代了' a'与范围' $范围'执行时,即你的代码仍然没问题。