Proszę rozważyć następujące ViewModel snippet:W applyBindings() jest zbyt szybki, zwany przed żądanie Ajax uzupełnia
var id, given1, given2;
$.get("testSynUfGet.aspx", null, function (data) {
id = data.id;
given1 = data.given1;
given2 = data.given2;
}, 'json');
//alert('here');
ko.applyBindings(new viewModel(id, given1, given2));
Wydaje się, że moje wezwanie ajax przez $.get
jest zbyt powolny lub ko.applyBindings()
jest zbyt szybki. Tak czy inaczej, wydaje się, że nokaut może prawidłowo związać tylko wtedy, gdy odkomentuję linię alert('here');
.
Jeśli zostanę skomentowany, żadna z formantów nie zostanie wypełniona.
Jakieś pomysły, ludzie?
Jedynym obejść mogłem pomyśleć to zrobić .applyBindings
jako część funkcji wywołania zwrotnego w $.get
tak:
$.get("testSynUfGet.aspx", null, function (data) {
ko.applyBindings(new viewModel(data.id, data.given1, data.given2));
}, 'json');
Obie odpowiedzi są ważne, w zależności od tego, co próbujesz osiągnąć. –
Po prostu chcąc to powtórzyć, wierzę, że mój pierwszy sposób myślenia wciąż był w sferze synchronicznego programowania. Poprawny jest drugi - ustawienie wiązania jako części procesu asynchronicznego. –