使用jQuery getJSON敲除JS

时间:2012-09-20 06:49:08

标签: php jquery ajax knockout.js

我很困惑为什么在向可观察数组添加元素时我的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

    });
});

2 个答案:

答案 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