Description détaillée :
$watch surveille une liste déroulante, et on s'attend à ce que ce n'est que lorsque l'utilisateur clique sur une option dans la liste déroulante que le front-end demande au back-end de mettre à jour les données.
Le problème actuel est le suivant :
Lorsque la page Web est chargée et que la liste déroulante apparaît pour la première fois, $watch sera automatiquement exécuté une fois. Le mécanisme ng pense que le chargement est un clic de l'utilisateur.
Vous voulez savoir comment désactiver l'exécution automatique de $watch dans ce cas
Merci pour l'invitation.
Tout d’abord, puis-je corriger un petit défaut de formulation.
Vous avez dit "$watch surveille une liste déroulante",
Lorsque nous posons des questions, nous avons tendance à trop nous concentrer sur les réponses que nous voulons connaître et à ignorer le mode d'expression. De ce fait, nous finissons souvent en vain. Ce type de questions est très courant dans la SF. la description est vague, ce qui rend impossible de répondre. En fait, je peux encore comprendre la description de la question, mais je veux juste dire quelques mots de plus en raison de mes sentiments.ng
est un framework qui implémente une liaison de données bidirectionnelle et possède une API déclarative. Il est impossible pour le$watch
ici de surveiller un élément DOM <.> . La formulation appropriée peut être écrite comme "une expression surveillée par $watch qui pointe vers la valeur sélectionnée dans la liste déroulante", ce qui est plus précis (les amis qui maîtrisent bien le chinois peuvent optimiser davantage).下拉框
, vous pouvez le juger ainsi
$watch
L'utilisation de ngChange peut éviter les appels d'initialisation
Remarque :
Doit être utilisé avec ngModel
Changer la valeur de ngModel à l'aide d'un programme ne déclenchera pas ngChange
Documentation ngChange