如何从knockout数组中选择一个索引值

时间:2014-04-28 21:02:16

标签: javascript arrays knockout.js

我想查找一个带有索引变量'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>;    

1 个答案:

答案 0 :(得分:2)

因为在绑定之前必须初始化视图模型。

这将有效:

var viewModel = new ViewModel();
viewModel.init();
ko.applyBindings(viewModel);

当您调用applyBindings时,Knockout正在尝试解析并应用您的绑定。但到那时你的availableItems数组仍然是空的,因此你得到了异常。