2017-08-16 25 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