Knockout.js计算可观察不绑定到可观察数组
问题描述:
我想要获取计算值并将这些值推送到可观察数组。 Web Api控制器返回简单的值 - 只是没有json wrap的纯数字。可能是这个问题。请告知,因为我是Knockout的新手。 P.S.这是两个ajax调用,因为他们调用不同的api控制器。Knockout.js计算可观察不绑定到可观察数组
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);
});
}
答
我不得不做一些猜测,但我相信你想要的是
self.books.push(item);
,而不是
self.books().push(item);
注意失踪()
那里。淘汰赛观察阵列“镜像”大部分阵列的功能。通过使用这些代替Array
提供的那些,淘汰赛可以跟踪发生在包裹阵列上的变化。
编辑:您可以在http://knockoutjs.com/documentation/observableArrays.html#manipulating-an-observablearray找到的所有的“镜像”功能的列表,大约两页下(节“操控的observableArray”)
+0
我确实改变了,但这没有帮助。 –
你想用一个副作用一个计算的?你确定?顺便说一句,你已经在这里创建了一个循环依赖关系 - 一个计算结果改变了“书”,并对“书”上的变化做出了反应。我认为你在错误的轨道上,请解释你实际上想要做的事情。 – Tomalak
副作用是什么意思?关于循环依赖你是对的。我应该改变它是self.PaxLeft(这是ko.observable)?实际上,我的目标是从两个不同的控制器获取数据,并将它们放到同一个observableArray中。 –
我在想第一个ajax调用。难道这是控制器返回只是纯粹的整数值,没有任何JSON包装的问题? –