我想查找一个带有索引变量'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>;
答案 0 :(得分:2)
因为在绑定之前必须初始化视图模型。
这将有效:
var viewModel = new ViewModel();
viewModel.init();
ko.applyBindings(viewModel);
当您调用applyBindings时,Knockout正在尝试解析并应用您的绑定。但到那时你的availableItems数组仍然是空的,因此你得到了异常。