因為 AngularJS Dependency Injection 的關係,因此在 Controller 傳入參數時,如果要使用特定的物件必須將名稱設定成固定的關鍵字(ex: $scope, $http)

但是如果要將 javascript minification 的話,帶入的參數名稱勢必會被取代,因此可以透過 AngularJS 中的 $inject 解決這個問題

一般 Controller

var MyCtrl = function (a, b) {
    a.name = 'Johnson';
    console.log(a.name);
    console.log(b);
}

// 傳入順序會與 $inject 設定的順序相同
MyCtrl.$inject = ['$scope', '$http'];

Module 中的 Controller

var ballApp = angular.module('BallApp', []);

ballApp.controller('NameCtrl', ['$scope', '$http', function(a, b) {
    a.name = 'Johnson';
    console.log(a.name);
    console.log(b);
    console.log(123);
}]);
Categories: AngularJS