Because Angularjs infers the dependent service name through the parameter name of the controller constructor. So if you want to compress the controller's JS code, all of its parameters will also be compressed, then rely on the injection system can not correctly identify the service.
If the name of our controller is: Bookctrl, the code before the compression is:
var Bookctrl = function ($scope, $http) {/* Constructor body */};
To overcome the problems caused by compression, simply assign the $inject property to an array of dependent service identifiers in the controller function:
Bookctrl $inject = [' $scope ', ' $http '];
Another method can also be used to specify a list of dependencies and to avoid compression problems--constructing a controller using JavaScript arrays: Putting the service to be injected into a string array (representing the name of the dependency), the last element of the array is the Controller's method function:
var Bookctrl = [' $scope ', ' $http ', function ($scope, $http) {*/* constructor body */}];
The two methods mentioned above can work perfectly with any function that ANGULARJS can inject, which depends entirely on the programming style of your project and suggests an array approach.