【发布时间】:2013-07-15 11:56:32
【问题描述】:
我有一个 ko.observablearray。我正在填充一些从服务器获得的值:
self.AllItems = ko.observableArray([]);
$.getJSON('/Controller/GetItems', function (data) {
for (var index = 0; index < data.length; index++) {
self.AllItems.push(data[index]);
}
};
});
我知道这很好用,因为我将数组绑定到列表并包含所有项目。
<select multiple="multiple" size='4' data-bind="options:$root.AllItems, selectedOptions:$root.ItemsSelectValue"> </select>
但是,之后我无法访问 AllItems 的任何元素。
alert(self.AllItems().length); -- 返回 0
alert(self.AllItems()); -- 不返回任何内容
请帮忙。
【问题讨论】:
-
您的代码应该可以工作。获取数据后,您的警报究竟何时在
$.getJSON回调中执行?你可以在 JSFIddle 中创建一个报告吗? -
您确定要调用
alert在getJSON返回数据之后? -
我不确定如何在 Fiddle 中模拟服务器调用..
-
function (data)function (data) {??function (data) {呢?? -
你在哪里调用 alert(self.AllItems().length); ?由于 getJSON 异步工作,因此您必须在回调函数中调用它。
标签: knockout.js ko.observablearray