10
votes

Comment montrer / masquer l'élément dans la répétition NG en fonction de la valeur dans l'objet? Angularjs

OK, j'essaie de comprendre comment montrer mes divers boutons d'action pour chacun de mes éléments de la liste en fonction de la valeur de item.status . Par exemple: je voudrais seulement montrer le bouton d'édition si item.status est 'nouveau' . Quelle est la meilleure façon d'approcher cela?

En outre, la solution devrait pouvoir prendre en charge plusieurs valeurs. Par exemple, le bouton Supprimer ne montrerait que pour 'Nouveau' et '"terminé" , mais pas pour "en cours" .

peut-il être fait avec juste ng-show? xxx


0 commentaires

4 Réponses :


2
votes

faire quelque chose comme xxx

Je n'ai pas testé le code et ceci est juste une suggestion.


0 commentaires

17
votes

Vous avez plusieurs solutions:


4 commentaires

Oui, mais le bouton de suppression serait quelque chose comme ça `ng-if =" item.status === "nouveau" || item.status === "Terminé" || item.status === "en cours" " > Ce qui est assez long.


Merci pour la réponse. C'était ce que je cherchais!


Je vois pourquoi tu es tous deux d'accord c'est le meilleur moyen. Il est un peu plus propre et plus facile à maintenir si les valeurs changent, vs les chasser dans la vue. Merci à vous deux.


Yup et comme je l'ai dit, si vous pensez que vous allez faire ce genre de chèques dans d'autres parties de votre application, mettez mieux les fonctions dans un service au lieu du contrôleur, pour la réévaluation. Idéalement, les contrôleurs ne sont que la colle entre la logique de vos services et votre vue.



3
votes

Il y a plus d'une façon de le faire. Personnellement, j'aime le déclaratif qui signifie garder votre avis très descriptif et sans logique. Alors quelque chose comme ça.

Modifier

ou utilisez ng-si

puis dans votre contrôleur xxx

Qu'est-ce qui est bien à propos de ceci est votre fonction éditoriée pourrait être réutilisée dans d'autres directives. Je suppose que d'autres parties de votre vue dépendront de la modification / la suppression. Vous pouvez même mettre cette fonction dans un service pour réutiliser sur toute votre application.


1 commentaires

C'est une excellente réponse. Je tenais cela plus tôt, mais je n'ai pas vraiment eu le savoir-faire. = D



3
votes

Même depuis que cela a été un moment depuis que l'OP a posé la question, ajouter mes deux cents au cas où quelqu'un d'autre a besoin d'une option plus facile qui consiste à utiliser le filtre angularjs .

Donc pour afficher uniquement des éléments où item.status === Nouveau Utiliser: xxx

Si sur l'autre main, vous voulez uniquement des éléments où item.status! == Nouveau Utilisation: xxx


0 commentaires