0

オブザーバブル配列に要素を追加したときに 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

    });
});
4

2 に答える 2

1

AllSchedules 変数ではなく、監視可能な配列 (shedules) にデータをプッシュする必要があります。コードをこれに置き換えると、機能するはずです。

var model = new SchedulesViewModel()
ko.applyBindings(model);

$.getJSON("GetSchedules.php", function(data) {          
    model.schedules.push({downTime: "test2"}); 

});
于 2012-09-20T15:17:12.920 に答える
0

AllSchedules 配列は観測可能な配列ではないため、observableArray に変更します

于 2012-09-20T06:56:37.170 に答える