我想查找带有索引变量“id”的数组 availableItems。 这是我的代码片段:
function Item(id, category, name, selected ) {
var self = this;
self.id = ko.observable(id);
self.Category = ko.observable(category);
self.Name = ko.observable(name);
self.Selected = ko.observable(selected);
}
function ViewModel() {
var self = this;
self.availableItems = ko.observableArray();
self.init = function (){
self.availableItems.push(new Item(1, "A", "Hello", false));
self.availableItems.push(new Item(2, "A", "Hi", true));
self.availableItems.push(new Item(3, "A", "Bye", false));
}
self.id = ko.observable(1);
}
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
viewModel.init();
为什么以下 HTML 行不起作用?
Indexed line: <span data-bind="text: $root.availableItems()[$root.id()].Selected()"></span>;
最佳答案
因为您必须在绑定(bind) View 模型之前初始化它。
这会起作用:
var viewModel = new ViewModel();
viewModel.init();
ko.applyBindings(viewModel);
当您调用 applyBindings 时,Knockout 会尝试解析并应用您的绑定(bind)。但到那时你的 availableItems 数组仍然是空的,因此你得到了异常。
关于javascript - 如何从 knockout 数组中选取索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23351118/