2017-08-16 1 views
0

So weiß ich, dass ich [] verwenden muss, um meinen Code vor der Verkleinerung zu sichern. Zum Beispiel:Wie zu schützen AngularJS-Controller von Minify

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

Aber wie das tun, wenn ich nicht app als globale Variable bin, habe ich

bekam
(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); 
    }; 
} 
})(); 

Wie verhindern, dass es Probleme bei der Verkleinerungs?

Antwort

3

Auf die gleiche Weise:

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

ich raten Ihnen dringend, ng-annotate zu verwenden, die mit der einfachen Syntax ermöglicht, und wandelt sie in minifiable Code für Sie. Das macht Ihren Code einfacher, einfacher zu lesen und vermeidet viele Fehler.

0

Ich glaube, es sollte die gleiche Art und Weise sein:

(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

Wenn ein Controller oder ein Dienst eine benannte Funktion wie in Code ist oben, sieht es am besten, wenn es mit $inject (siehe John Papa style guide) kommentiert wird.

Durch das Hochziehen kann die Anmerkung direkt über der injizierbaren Funktion platziert werden.

+0

Diese Lösung sieht noch besser aus als JB Nizet, danke. – BT101

+0

Gern geschehen. Normalerweise werden anonyme Funktionen mit Inline-Arrays versehen (wie in dieser Antwort gezeigt, https://stackoverflow.com/a/45721757/3731501), benannte Funktionen werden mit $ inject kommentiert. Es ist eine Frage des Stils, wenn Sie das eine oder andere wählen. – estus