Knockout可观察数组不能按预期工作

时间:2012-06-27 17:43:40

标签: knockout.js knockout-2.0

我是Knockout.js的新手, 我创建了一个可观察的数组并用一些数据初始化。我希望无论何时更改UI(复选框或文本值),模型都应该更新。

我也订阅了这个数组。但我的回调方法从未被调用过。

var viewModel = {
    seats:ko.observableArray( [
        { "No": "1", "Booked": "" }, ...
    ] )
};

viewModel.seats.subscribe(
    function(newvalue){
        alert(newvalue);
    }
);

ko.applyBindings( viewModel);

http://jsfiddle.net/2NMJX/

1 个答案:

答案 0 :(得分:3)

您刚刚创建了一个可观察数组 - 这意味着,无论何时更新数组(添加或删除元素,例如:http://jsfiddle.net/2NMJX/1/),都会收到通知,但不会更新元素本身。要实现这一点,您需要将值封装在observables中:

seats: ko.observableArray( [
    { "No": ko.observable("1"), ...

然后,您可以订阅这些可观察量:

viewModel.seats()[0].No.subscribe( ...

http://jsfiddle.net/2NMJX/2/(尝试编辑“1”)