淘汰数据 - 绑定到数组元素只有半工作

时间:2013-03-12 04:37:52

标签: knockout.js

我绑定到数组中的一个observable,绑定似乎只是在第一次从模型中读取值时生效。随后对绑定到observable的输入进行更改不会更新模型。

JSFiddle在这里:http://jsfiddle.net/coverbeck/hK49f/88/。这是HTML:

<div>
    <input data-bind="value: work"/>
    <span data-bind="text: work"></span>
</div>
<!-- ko foreach: nowork -->
<div>
    <input data-bind="value: $data"/>
    <span data-bind="text: $data"></span>
</div>
<!-- /ko -->

JavaScript:

var viewModel = {
    work: ko.observable('Change me and span changes'), 
    nowork : [ko.observable("Change me and span doesn't update")]
}
ko.applyBindings(viewModel);

在第一个输入中键入内容时,绑定到可观察更新的范围。当您在第二个输入中键入内容时,绑定到数组内的observable的跨度不会更新。但是输入和跨度开始正确。

使“nowork”成为ko.observableArray而不是普通数组没有任何区别(我也不期望它)。

我觉得我错过了一些明显的东西,但我看不出是什么。有没有人知道发生了什么?

谢谢,

查尔斯

1 个答案:

答案 0 :(得分:0)

问题是foreach绑定,在foreach绑定中,您将输入与$data绑定,$data属性不是可观察的,它是一个未包含的observable(仅可观察的内容)。这就是为什么更改为输入字段不会改变您的可观察属性值。

您应该使用observable绑定输入。这是一个工作小提琴

http://jsfiddle.net/w7WQh/