Knockout.js计算的observable不绑定到可观察数组

时间:2014-04-04 05:38:11

标签: javascript knockout.js

我正在尝试获取计算值并将这些值推送到可观察数组。 Web Api控制器返回简单值 - 只是没有json换行的纯数字。可能是这个问题。请告诉我,我是Knockout的新手。 附:这是两个ajax调用,因为它们调用不同的api控制器。

 function GrafikViewModel(grafikUri) {
            var self = this;
            self.books = ko.observableArray();
            self.PaxLeft = ko.computed(function () {
                ko.utils.arrayForEach(self.books(), function (book) {
                    $.getJSON("/api/orders/getpax/" + book.kodg, function (item) {
                        self.books().push(item);
                    });
                }, GrafikViewModel)
            });
            $.getJSON(grafikUri, function (data) {
                self.books(data.$values);
            });
        }

1 个答案:

答案 0 :(得分:0)

我必须做一些猜测工作,但我相信你想要的是

self.books.push(item);

而不是

self.books().push(item);

注意那里缺少()。淘汰赛观察阵列"镜像"大多数数组的功能。通过使用那些而不是Array提供的那些,knockout可以跟踪包装数组发生的变化。

编辑:您可以找到所有"镜像"的列表功能在http://knockoutjs.com/documentation/observableArrays.html#manipulating-an-observablearray,大约两页下来(部分"操纵observableArray")