L'accès de la portée des variables à partir d'un filtre en AngularJS
Je suis de passage date
de la valeur de mon filtre personnalisé de cette façon:
angular.module('myapp').
filter('filterReceiptsForDate', function () {
return function (input, date) {
var out = _.filter(input, function (item) {
return moment(item.value.created).format('YYYY-MM-DD') == date;
});
return out;
}
});
Je voudrais injecter un couple de portée des variables, là aussi, à l'instar de ce que je peux faire dans les directives. Est-ce possible de le faire sans avoir à passer ces vars explicitement que les arguments de la fonction?
Vous devez vous connecter pour publier un commentaire.
Apparemment, vous pouvez.
Habituellement, vous devez passer portée des variables pour le filtre en tant que paramètre de la fonction:
Mais, pour passer le champ d'application actuel, vous auriez à passer
this
:et
this
sera une référence à portée actuelle:Simplifiée:
PLUNKER
Avertissement:
ng-bind-html-unsafe
, sauf si vous êtes de passage à html. aussi, j'ai utilisé$scope
au lieu descope
alors c'est le même à l'intérieur du filtre est fonction que je suis habitué à ce que partout ailleurs 🙂Controller
. De cette façon, il n'a pas un "gros" dépendance et est plus facile à tester. Utilisez simplement$filter('filter')(array, expression, comparator, anyPropertyKey)
dans leController
J'ai trouvé que
this
références locales$scope
. Ne sais pas si c'est sûr moyen d'y accéder.