J'ai écrit une fonction de filtre qui retournera des données basées sur l'argument que vous passez. Je veux la même fonctionnalité dans mon contrôleur. Est-il possible de réutiliser la fonction de filtre dans un contrôleur?
Voici ce que j'ai essayé jusqu'à présent:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
Réponses:
Injectez $ filter sur votre contrôleur
Ensuite, partout où vous souhaitez utiliser ce filtre, utilisez-le simplement comme ceci:
Si vous souhaitez passer des arguments à ce filtre, faites-le en utilisant des parenthèses distinctes:
Où se
arg1
trouve le tableau sur lequel vous souhaitez filtrer etarg2
l'objet utilisé pour filtrer.la source
var anyNumber = $filter('number')(12.222222, 2);
pour obtenir12.22
.$filter("currency")(price, "$", 2)
Donc, si vous aviez un prix = 200, cette expression retournerait "200,00 $".$filter('filtter1')
(2 t). Cependant, si vous injectezfiltter1Filter
Angular , vous vous plaindrez immédiatement que la dépendance n'existe pas.La réponse fournie par @Prashanth est correcte, mais il existe un moyen encore plus simple de faire de même. Fondamentalement, au lieu d'injecter la
$filter
dépendance et d'utiliser une syntaxe maladroite pour l'invoquer ($filter('filtername')(arg1,arg2);
), on peut injecter la dépendance étant: le nom du filtre plus leFilter
suffixe.Prenant l'exemple de la question, on pourrait écrire:
Il convient de noter que vous devez ajouter
Filter
au nom du filtre, quelle que soit la convention de dénomination que vous utilisez: foo est référencé en appelantfooFilter
fooFilter est référencé en appelant
fooFilterFilter
la source
En utilisant l'exemple de code suivant, nous pouvons filtrer le tableau dans le contrôleur angulaire par nom. ceci est basé sur la description suivante. http://docs.angularjs.org/guide/filter
this.filteredArray = filterFilter (this.array, {nom: 'Igor'});
JS:
HTML
la source
Voici un autre exemple d'utilisation
filter
dans un contrôleur angulaire:C'est simple, hein?
la source
Il existe trois façons possibles de procéder.
Supposons que vous ayez le filtre simple suivant, qui convertit une chaîne en majuscules, avec un paramètre pour le premier caractère uniquement.
Directement à travers
$filter
Remarque: cela vous donne accès à tous vos filtres.
Attribuer
$filter
à unvariable
Cette option vous permet d'utiliser la
$filter
même chose afunction
.Charger seulement un spécifique
Filter
Vous pouvez charger uniquement un filtre spécifique en ajoutant le nom du filtre avec
Filter
.Lequel vous utilisez vient à la préférence personnelle, mais je recommande d'utiliser le troisième, car c'est l'option la plus lisible.
la source
la source
J'ai un autre exemple, que j'ai fait pour mon processus:
Je reçois un tableau avec une description de valeur comme celle-ci
dans mes Filters.js:
Ensuite, un test var (contrôleur):
la source
AngularJs vous permet d'utiliser des filtres à l'intérieur du modèle ou à l'intérieur du contrôleur, de la directive, etc.
dans le modèle, vous pouvez utiliser cette syntaxe
et à l'intérieur du contrôleur, vous pouvez utiliser l'injection du service de filtre $
Si vous avez besoin de plus avec l'exemple de démonstration, voici un lien
Exemples de filtres AngularJs et démo
la source
Il existe une autre façon d'évaluer les filtres qui reflète la syntaxe des vues. L'invocation est velue mais vous pouvez lui créer un raccourci. J'aime que la syntaxe de la chaîne soit identique à celle que vous auriez dans une vue. Ressemble à ça:
la source
Il semble que personne n'ait mentionné que vous pouvez utiliser une fonction comme arg2 dans $ filter ('filtername') (arg1, arg2);
Par exemple:
la source
Un exemple de date simple utilisant $ filter dans un contrôleur serait:
Comme expliqué ici - https://stackoverflow.com/a/20131782/262140
la source
Utilisez le code ci-dessous si nous voulons ajouter plusieurs conditions, au lieu d'une seule valeur dans le filtre angulaire javascript:
la source
Tout d'abord, injectez $ filter dans votre contrôleur, en vous assurant que ngSanitize est chargé dans votre application, plus tard dans l'utilisation du contrôleur:
Consultez toujours les documents angularjs
la source
si vous voulez filtrer un objet dans le contrôleur, essayez ceci
Cela retournera un objet filtré selon la condition if
la source
Réutilisation d'un filtre Angular.js - Vue / Contrôleur
Cette solution couvre la réutilisation des filtres angulaires. Ce qui est encore une autre façon de filtrer les données, et Google m'a atterri ici quand j'en avais besoin; et j'aime partager.
Cas d'utilisation
Si vous filtrez déjà, disons dans une répétition ng dans votre vue (comme ci-dessous), alors vous pourriez avoir défini un filtre dans le contrôleur comme suit. Et puis vous pouvez réutiliser comme dans les exemples finaux.
Exemple d'utilisation du filtre - Répétition filtrée dans la vue
Exemple de définition de filtre angulaire
Ainsi, le concept ici est que vous utilisez déjà un filtre créé pour votre vue, puis réalisez que vous souhaitez également l'utiliser dans votre contrôleur.
Utilisation de la fonction de filtre dans le contrôleur Exemple 1
Utilisation de la fonction de filtre dans le contrôleur Exemple 2
Afficher un bouton uniquement si aucun doublon n'est trouvé, en utilisant le filtre précédent.
Bouton HTML
Bouton Afficher / Masquer
Certains peuvent trouver cette version de filtrage facile, et c'est une option Angular.js.
Le paramètre de comparaison facultatif "true" utilisé dans la vue et dans l'appel de fonction $ filter spécifie que vous voulez une comparaison stricte. Si vous omettez, les valeurs peuvent être recherchées sur plusieurs colonnes.
https://docs.angularjs.org/api/ng/filter/filter
la source