Hãy xem xét đoạn mã ViewModel sau:Các applyBindings() là quá nhanh, gọi trước khi yêu cầu Ajax hoàn
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));
Dường như cuộc gọi ajax của tôi thông qua $.get
là quá chậm hoặc ko.applyBindings()
là quá nhanh. Dù bằng cách nào, có vẻ như loại trực tiếp đó chỉ có thể ràng buộc đúng nếu tôi bỏ ghi chú dòng alert('here');
.
Nếu tôi để lại nhận xét, không có điều khiển nào được điền.
Mọi ý tưởng, mọi người?
Công việc duy nhất xung quanh tôi có thể nghĩ ra là để làm .applyBindings
như là một phần của hàm callback trong $.get
như thế này:
$.get("testSynUfGet.aspx", null, function (data) {
ko.applyBindings(new viewModel(data.id, data.given1, data.given2));
}, 'json');
Cả hai câu trả lời đều hợp lệ, tùy thuộc vào những gì bạn đang cố gắng đạt được. –
Chỉ muốn xem lại điều này, tôi tin rằng cách suy nghĩ đầu tiên của tôi vẫn còn trong lĩnh vực lập trình đồng bộ. Chính xác là thứ hai - làm cho việc ràng buộc trở thành một phần của quá trình không đồng bộ. –