ngChange est appelé lorsque le modèle est modifié par programme
J'ai un problème lorsque angulaire de la ng-le changement est appelé lorsque le modèle est modifié par programmation.
$scope.sendMessage = function() {
$scope.message = "Message sent";
}
$scope.confirmed = true;
$scope.mySelectBox = $scope.selects[1];
<select ng-model="mySelectBox"
ng-options="item.name for item in selects track by item.name"
ng-change="sendMessage()">
</select>
Voici le code exemple: http://plnkr.co/edit/R4MO86ihMrauHXhpCMxi?p=preview
Message doit être nulle, parce que sendMessage
ne devrait pas être appelé. Le modèle est modifié par programmation.
source d'informationauteur divide by zero
Vous devez vous connecter pour publier un commentaire.
Selon les docs, vous avez raison.
https://docs.angularjs.org/api/ng/directive/ngChange
mais cela semble être un bug causé par l'ordre dans lequel les événements sont accrochés
Le meilleur moyen tour - de recourir à la js gestionnaire (onchange)
Voir plunk
http://plnkr.co/edit/2ZbxS1tszppR9SrNqxVB?p=preview
HTH
Vous pouvez essayer avec ngModelOptions. Voir ce plunker de référence http://plnkr.co/edit/BdKx62RW5Ls2Iz1H3VR1?p=preview.
Dans mon exemple j'ai utilisé
ng-model-options="{ updateOn: 'change', debounce: { change: 0 } }"
et il semble fonctionner. Il ne fonctionne que fonction fournie dans ngChange quand j'ai changer la sélection. Sur initialiser la phasemessage
reste vide.La ng-changement de rappel est modifié à chaque changement de modèle, et il traite de la configuration initiale en tant que tel changement. Ce que vous pouvez faire est d'exécuter le code désiré seulement après que l'utilisateur interagit avec elle. Vous pouvez vérifier la $touché propriété du terrain:
Vous offrir de la valeur de modèle de contrôleur ,de sorte que chaque fois que vous définissez la valeur de modèle qui s'accorde avec la liste d'appel ng-changement:
Voir mis à jour plunker:
http://plnkr.co/edit/f3xGmKesLFbzti56WLyH?p=preview