0

我正在绑定到数组内的可观察对象,并且绑定似乎仅在第一次从模型中读取值时才会生效。随后对绑定到可观察对象的输入进行更改不会更新模型。

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);

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

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

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

谢谢,

查尔斯

4

1 回答 1

0

问题是 foreach 绑定,在 foreach 绑定中,您将输入绑定到$data并且$data属性不是可观察的,而是未包装的可观察的(仅可观察的内容)。这就是为什么更改输入字段不会改变您的可观察属性值的原因。

您应该将输入与可观察的绑定。这是一个工作小提琴

http://jsfiddle.net/w7WQh/

于 2013-03-12T05:10:02.630 回答