Вычисляемый столбец Knockout с наблюдаемым массивом, не обновляющим пользовательский интерфейс

Я использую следующий нокаут observableArray и код вычисляемого столбца, но пользовательский интерфейс (для вычисляемого с привязкой к данным) не обновляется, когда я помещаю значения в наблюдаемый массив. Пожалуйста, посмотрите мой пример jsFiddle.

http://jsfiddle.net/U9Sqb/2/

Есть ли лучший способ передать значения в observableArray и обновить пользовательский интерфейс через вычисляемый? Заранее спасибо.

HTML:

<html>
    <head>
        <script src="http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.1.0.js" ></script>
    </head>
    <body>
        <div data-bind="text: onString"></div>
        <div id="test"></div>
    </body>
</html>

JavaSript:

function MyData() {
  var self = this;
  self.currentOnOf = ko.observable(1);
  self.available = ko.observableArray();
  self.onString = ko.computed(function () {
    return "On " + self.currentOnOf() + " of " + self.available ().length;}, self);
}

var data = new MyData();

$(document).ready(function () {
    ko.applyBindings(data);
    data.available().push(1);
    data.available().push(2);
    $("#test").html(data.available().length);
});

person likestoski    schedule 19.07.2012    source источник


Ответы (1)


Когда вы нажимаете на массив ko.observable, вам нужно нажимать прямо на него:

data.available.push(1);
data.available.push(2);
person philipvr    schedule 19.07.2012
comment
Я усвоил этот урок на собственном горьком опыте. Обязательно прочтите раздел по адресу knockoutjs.com/documentation/observableArrays.html, озаглавленный Управление наблюдаемым массивом. - person Joel Cochran; 19.07.2012