2017-08-16 20 views
0

所以我知道我需要使用[]來保證我的代碼在縮小前保護。例如:如何保護angularJS控制器免於縮小

app.controller('mainController', ['$scope', function($scope) { 
    $scope.message = 'HOORAY!'; 
}]); 

但如何做到這一點的時候,我不使用app爲全局變量,我有

(function() { 
'use strict'; 

angular 
    .module('app') 
    .controller('loginCtrl', Controller); 

function Controller($scope, authService) { 
    var vm = $scope; 
    vm.login = function(login_field, password_field) { 
     var loginData = { 
      login: login_field, 
      password: password_field 
     }; 
     authService.login(loginData); 
    }; 
} 
})(); 

如何防止它的問題在縮小?

回答

3

用同樣的方法:

.controller('loginCtrl', ['$scope', 'authService', Controller]); 

我強烈建議你使用NG-註釋,它允許使用簡單的語法,並將其轉換爲minifiable代碼爲您服務。這將使您的代碼更簡單,更易於閱讀,並避免大量的錯誤。

0

我相信這應該是相同的方式:

(function() { 
'use strict'; 

angular 
.module('app') 
.controller('loginCtrl', ['$scope', 'authService', function($scope, authService) { 
    $scope.login = function(login_field, password_field) { 
     var loginData = { 
      login: login_field, 
      password: password_field 
     }; 
     authService.login(loginData); 
    }; 
}]); 
})(); 
1

當控制器或服務是一個名爲功能就像在上面的代碼,當它與$inject註釋(見John Papa style guide)看起來最好的。

angular 
    .module('app') 
    .controller('loginCtrl', Controller); 

Controller.$inject = ['$scope', 'authService']; 
function Controller($scope, authService) {...} 

提升允許將註釋放在注射功能的上方。

+0

此解決方案看起來比JB Nizet更好,謝謝。 – BT101

+0

不客氣。這就是通常的做法,匿名函數用內聯數組註釋(就像這個答案中顯示的那樣,https://stackoverflow.com/a/45721757/3731501),命名函數用$ inject註釋。如果你選擇一個或另一個,這是一個風格問題。 – estus