app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) {
Das Obige ist ein Beispiel für meinen Code, bei dem ich versuche, $http.get
und auch $filter
in meiner controller
zu verwenden.
Das einzige Problem ist, wenn ich es so verwende, das Konsolenprotokoll gibt einen Fehler aus, der $filter is not a function
sagt.
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
Wenn ich sie austausche, wird ein Fehler ausgegeben, der $http is undefined
Wenn Sie verwenden
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
die Variable $filter
ist tatsächlich eine Instanz von $http
und $http
ist eine Instanz von $filter
. Eigentlich spielt es keine Rolle, was in function(...)
params geschrieben wird.
Was hier wichtig ist, ist zum Beispiel die Reihenfolge der verwendeten Injektionsmittel
app.controller('myController', ['$scope', '$http', '$filter', function(a, b, c) {
wird den Instanzen zugeordnet:
Aus eckigen Dokumenten:
Da Angular die Abhängigkeiten des Controllers von den Namen der Argumente zur Konstruktorfunktion des Controllers leitet, wenn Sie den JavaScript-Code für den PhoneListCtrl-Controller minimieren, werden auch alle seine Funktionsargumente und der Abhängigkeitsinjektor reduziert wäre nicht in der Lage, Dienste korrekt zu identifizieren.
Wenn Sie also die Array-Notation für Ihren Controller verwenden, stellen Sie sicher, dass der Code funktioniert, nachdem der Code minimiert ist.
add filter nach http und angle version verteidigt auch, wie Sie filter verwenden werden.
plateFormController.$inject = ['$scope', '$http',
'$filter','$timeout', '$q', '$mdSidenav', '$log'];
function plateFormController($scope, $http,$filter, $timeout, $q) {
jsonByName=$filter('filter')($scope.json, { name: 'a' });
}
In meinem Fall ist das erwartete Datenlistenobjekt null, indem sichergestellt wird, dass das erwartete Listenobjekt nicht null ist. Ich kann diesen Fehler vermeiden.