2017-06-23 94 views
-2

我在一個指令中聲明瞭一個控制器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) { 
... 
} 

回答

1

需要注入所有依賴按medicineAutocomplete功能,他們應該以相同的順序。

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

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

這工作!謝謝!我最初沒有將它們添加到依賴項列表中,因爲我的應用程序沒有它就可以正常工作。我想知道這是如何工作的。 – arjunnn

+0

是的。你可以在不使用'$ inject'注入依賴的情況下工作。但是,如果你縮小你的應用程序,那麼角度無法識別哪個依賴是哪個。這就是爲什麼我們使用'$ inject'注入與字符串相同的依賴關係。 –