我有一個下拉窗體和頁面使用Knockout JS將數據綁定到html元素我有下面的代碼預填充數據庫中的值。
JS
self.Irr = ko.observableArray([]);
self.Crp = ko.observableArray([]);
self.Incr = ko.observableArray([]);
self.Brnd = ko.observableArray([]);
self.Sec4 = ko.observableArray([]);
$.getJSON("GetIrr", null, function (data) { self.Irr(data); })
.done(function() {
$.getJSON("GetCrp", null, function (data) { self.Crp(data); });
})
.done(function() {
$.getJSON("GetTill", null, function (data) { self.Sec4(data); });
})
.done(function() {
$.getJSON("GetBrnd", null, function (data) { self.Brnd(data); });
})
.done(function() {
$.getJSON("GetIncr", null, function (data) { self.Incr(data); });
})
.done((function() {
var request = $.ajax({
type: "POST",
dataType: 'json',
url: "UserSavedData",
data: { "InfoVal": $("#infoID").val() }
});
request.success(function (result) {
// here i use the result data to get ids of the dropdown values and
//fill the form
}
從可觀察陣列中的數據不會被填充(不能作爲的getJSON respnonse需要更多的時間來加載我想分配結果ID對象)由於$的getJSON的網絡定時調用我該如何處理這
按我所用的那麼建議()代替()完成,但仍然有不能夠加載數據的問題(即不填充一個場做節目當我放置一個斷點和德在Chrome中的錯誤,但沒有調試時,它不顯示值)
偉大的答案。也許在'sayHelloAsync'內的'setTimeout'調用中使用隨機超時長度將更好地表明許多對$ .getJSON的調用將以隨機順序返回。 – csum
@csum - 好的建議。進行更改以使用隨機超時。 – Josh
這工作了幾次,但當我嘗試刷新頁面或重定向回頁面它仍然不會填充(只有一個字段),但是當我嘗試在Chrome中調試並放置一個斷點時,我可以看到ID正在放置在選定的可觀察對象中。猜測當我有它的中斷點時,它有更多的時間來加載數據 – sss111