Ich versuche, einen benutzerdefinierten Filter zu erstellen, aber wenn ich versuche, ihn in meinen Controller zu injizieren, erhalte ich den Fehler 'Unbekannter Provider'. Ich habe alle Referenzen überprüft und doppelt überprüft, aber ich kann nicht sehen, was falsch ist.
Ich weiß, dass die Datei in meiner index.html korrekt referenziert ist, sie ist geladen und kann vom Inspektor gefunden werden. Dies ist der Code, den ich habe:
In meiner app.js:
%Vor%Mein Filter:
%Vor%Und der Controller:
%Vor%Natürlich ist das ziemlich vereinfacht, aber es funktioniert einfach nicht und ich kann nicht verstehen warum. Ich habe mehrere Dienste geleistet und sie arbeiten und spielen nett miteinander.
Sie müssen den Filter nicht selbst injizieren.
Dieser Code ...
%Vor%Sollte
sein %Vor% Und in CourseCtrl
sollten Sie Ihren Filter wie gewohnt verwenden.
Das Modul 'equiclass.filters'
in Ihr Modul 'equiclass.controllers'
einfügen ist genug.
Ich hatte ein ähnliches Problem und machte einen Beitrag darüber auf meinem Blog .
- Bearbeiten
Wie n00dl3 unten erwähnt wird, ist die automatische Benennungskonvention in Angular. Wenn Sie Ihren Filter specialNumberFilter
benennen, müssen Sie ihn beim Injizieren als specialNumberFilterFilter
bezeichnen. Dies ermöglicht Ihnen, den Filter als eine Funktion zu verwenden, die es ist.
// In a controller
vm.data = specialNumberFilterFilter(vm.data, 'a');
Aber ich glaube, Sie können den Filter auch verwenden, ohne ihn in einen Controller zu injizieren, wenn er in einem Zeichenfolgenausdruck verwendet wird, der z. B. von einer Uhr ausgewertet wird, da dies dem Szenario bei der Verwendung entspricht in einer Vorlage.
// Inside a watch - no controller injection required
'$scope.$watch('vm.data | specialNumberFilter', function(new, old) { ... })'
Dann müssen Sie es nur in Ihr Modul injizieren und es dann wie folgt verwenden {{ expression | filter }}
oder {{ expression | filter:argument1:argument2:... }}
.
injiziere eine Abhängigkeit mit dem Namen <filterName>Filter
, wie folgt:
Tags und Links angularjs angularjs-filter