2016-06-08 109 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