La valeur d'entrée liée à Knockout.js n'est pas mise à jour lorsque j'utilise jquery .val ('xyz')


86

J'ai une entrée qui a une liaison knockout à la valeur.

Lorsque je mets à jour la valeur à l'aide de la méthode .val () de jquery, la valeur modifiée n'est pas reflétée dans le viewModel.

J'ai besoin d'utiliser jQuery pour définir cette valeur. Comment puis-je déclencher la mise à jour du viewModel?

Réponses:


142

.val()ne déclenche pas l'événement de modification. Alors, vous pouvez le faire. val("blah").change()pour que KO reprenne les modifications.


3
Et si vous n'avez pas de contrôle là-dessus val()? Existe-t-il un moyen pour jQuery d'écouter val()les éléments?
cherouvim

+1 J'ai essayé de comprendre pendant quelques heures pourquoi, lorsque je modifiais une valeur avec la fonction getElementById, mon viewmodel n'était pas mis à jour. Merci!
Samuel

1
Mais vraiment laisser KO faire toute la manipulation dom est une meilleure approche, à mon humble avis.
Tom

Assurez-vous également de vérifier votre data-binddéclaration. J'ai eu ce bug avant de réaliser qu'il devrait l'être data-bind="value:location"et PAS data-bind="value:location()"
jmb-mage

Merci. Cela fait le travail pour moi.
DriLLFreAK100
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.