angulaire.js - $watch surveille la liste déroulante. Elle sera automatiquement exécutée une fois lorsque la page Web sera actualisée. Comment désactiver l'exécution automatique ?
漂亮男人
漂亮男人 2017-05-15 17:04:22
0
3
939

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

漂亮男人
漂亮男人

répondre à tous(3)
迷茫

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", 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). 下拉框

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.

Pour en revenir au sujet, puisque vous ne voulez pas vous occuper de l'initialisation des données

, vous pouvez le juger ainsi$watch

$scope.$watch('表达式', function(newVal, oldVal){
    //当之前值和当前值相同,或者之前值为null或undefined时
    if(newVal === oldVal || oldVal == null){
        //不执行任何操作
        return;
    }
    
    //你的正常代码,写这里
});
PHPzhong
http://docs.ngnice.com/api/ng/type/$rootScope.Scope

scope.$watch('name', function(newValue, oldValue) {
  if(newValue == oldValue) return;
  scope.counter = scope.counter + 1;
});
習慣沉默

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

Évaluez l'expression donnée lorsque l'utilisateur modifie l'entrée. L'expression est évaluée immédiatement, contrairement à l'événement JavaScript onchange qui ne se déclenche qu'à la fin d'une modification (généralement, lorsque l'utilisateur quitte l'élément de formulaire ou appuie sur le bouton). touche retour).

Documentation ngChange

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal