我绑定到数组中的一个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而不是普通数组没有任何区别(我也不期望它)。
我觉得我错过了一些明显的东西,但我看不出是什么。有没有人知道发生了什么?
谢谢,
查尔斯
答案 0 :(得分:0)
问题是foreach绑定,在foreach绑定中,您将输入与$data
绑定,$data
属性不是可观察的,它是一个未包含的observable(仅可观察的内容)。这就是为什么更改为输入字段不会改变您的可观察属性值。
您应该使用observable绑定输入。这是一个工作小提琴