Wartość wejściowa związana z Knockout.js nie jest aktualizowana, gdy używam jquery .val ('xyz')

86

Mam wejście, które ma knockout powiązanie z wartością.

Kiedy aktualizuję wartość za pomocą metody .val () jquery, zmieniona wartość nie jest odzwierciedlana w viewModel.

Aby ustawić tę wartość, muszę użyć jQuery. Jak mogę wyzwolić aktualizację ViewModel?

nnpath
źródło

Odpowiedzi:

142

.val()nie wywołuje zdarzenia zmiany. Możesz więc po prostu zrobić. val("blah").change()aby KO odebrał zmiany.

RP Niemeyer
źródło
3
A jeśli nie masz nad tym kontroli val()? Czy istnieje sposób, aby jQuery nasłuchiwał val()elementów?
cherouvim,
+1 Przez kilka godzin próbowałem dowiedzieć się, dlaczego po zmianie wartości za pomocą funkcji getElementById mój viewmodel nie został zaktualizowany. Dziękuję Ci!
Samuel
1
Ale tak naprawdę pozwolenie nokautowi na manipulację domem jest lepszym podejściem, imho.
Tom
Upewnij się, że sprawdziłeś data-bindrównież swoje oświadczenie. Miałem ten błąd, zanim zdałem sobie sprawę, że powinien być data-bind="value:location"i NIE data-bind="value:location()"
jmb-mage
Dzięki. To działa dla mnie.
DriLLFreAK100