我很困惑为什么在向可观察数组添加元素时我的UI没有被更新。我意识到我没有对我的AJAX getJSON调用数据做任何事情,但是当我向它添加元素时,不应该更新我的可观察数组?它显示“test1”很好但不是“test2”。没有PHP或JS错误,它只是不更新UI。
HTML:
<div class="allScheduleWrap" data-bind="foreach: schedules">
<div class="schedule">
<div class="downTime" data-bind="text:downTime"></div>
</div>
</div>
JS:
$(document).ready(function() {
var AllSchedules = [];
AllSchedules.push({downTime: "test1"});
function SchedulesViewModel() {
var self = this;
self.schedules = ko.observableArray(AllSchedules);
}
ko.applyBindings(new SchedulesViewModel());
$.getJSON("GetSchedules.php", function(data) {
AllSchedules.push({downTime: "test2"}); //does NOT update the UI
});
});
答案 0 :(得分:1)
您应该将数据推送到可观察数组(shedules)而不是AllSchedules变量。用这个替换代码应该可以使它工作:
var model = new SchedulesViewModel()
ko.applyBindings(model);
$.getJSON("GetSchedules.php", function(data) {
model.schedules.push({downTime: "test2"});
});
答案 1 :(得分:0)
因为AllSchedules数组不是可观察数组,所以将其更改为observableArray