2016-06-08 66 views
2

我已经从以前的开发项目中获得了天赋,他一直在以我不熟悉的风格进行构建。角度控制器结构变化

  1. 整个事情被封装在一个匿名函数和 立即执行。
  2. 控制器首先声明并注入,然后调用 函数。
  3. 所有的控制器都在同一个文件中。

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. 他正在做些更复杂的事情(因此答案是肯定/否/否)?
+0

你可以阅读约翰帕帕角风格指南:https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md。 Ofc这只是一个意见,但他的风格有很多解释。 –

回答

0

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

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

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

如果您压缩此代码$范围将得到改变,以这将是你的控制器未知的依赖,因此这段代码将制动其它名称。

,但如果你写你的代码是这样

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

,然后再缩小这段代码的代码会是这个样子:

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

不改名$scope在单引号,因为提到minifier将它理解为一种价值。你的控制器在执行时用'$ scope'代替'a',即你的代码仍然可以。

+0

是的。你是对的。谢谢。 – DaveC426913