102 votes

La liaison du modèle angularJS ne se met pas à jour avec des valeurs dynamiques

C'est mon HTML:

 <input id="selectedDueDate" type="text" ng-model="selectedDate" />
 

Lorsque je tape dans la zone, le modèle est mis à jour via le mécanisme de liaison bidirectionnelle. Sucré.

Cependant, lorsque je le fais via JQuery ...

 $('#selectedDueDate').val(dateText);
 

Il ne met pas à jour le modèle. Pourquoi?

136voto

Renan Tomal Fernandes Points 5540

Angular ne sait pas ce changement. Pour cela, vous devez appeler $scope.$digest() ou effectuer le changement dans $scope.$apply(function() { $()... });

Voyez ceci pour mieux comprendre le dirty-checking

UPDATE : Voici un exemple

17voto

Ben Taliadoros Points 589

J'ai constaté que si vous ne comparez pas directement la variable à l'étendue, elle se met à jour de manière plus fiable.

Essayez d’utiliser "dateObj.selectedDate" et ajoutez dans le contrôleur la date selectedDate à un objet dateObj de la manière suivante:

$ scope.dateObj = {selectedDate: new Date ()}

Cela a fonctionné pour moi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X