通过指令定义控制器时如何进行依赖注入?

How to do dependency injection when defining controller via a directive?

我在指令中声明了一个控制器 medicineAutocomplete。现在我想将 $http 注入控制器,但我想不出正确的方法。我这样做了,但它似乎不起作用:

app.directive('medicineAutocomplete', function() {
 return {
    restrict: 'E',
    templateUrl: 'medicine-autocomplete.html',
    controller: medicineAutocomplete,
    controllerAs: 'ctrl'
  };
 });

medicineAutocomplete.$inject = ['$scope', '$http']; //is this right? 

function medicineAutocomplete ($timeout, $q, $http, $scope) {
...
}

需要按照 medicineAutocomplete 函数注入所有依赖项,并且它们应该以相同的顺序。

medicineAutocomplete.$inject = ["$timeout","$q", "$http", "$scope"];

function medicineAutocomplete ($timeout, $q, $http, $scope) {
...
}