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

最初の入力に何かを入力すると、オブザーバブルにバインドされているスパンが更新されます。2 番目の入力に何かを入力すると、配列内のオブザーバブルにバインドされているスパンは更新されません。しかし、その入力とスパンは正しく開始されます。

「nowork」を単純な配列の代わりに ko.observableArray にしても、違いはありません (期待もしないでしょう)。

明らかな何かが欠けているように感じますが、何がわかりません。何が起こっているのか誰にも分かりますか?

ありがとう、

チャールズ

4

1 に答える 1

0

問題はforeachバインディングです。foreachバインディングでは、入力をバインドし$data$dataプロパティは監視可能ではなく、ラップされていない監視可能です(監視可能のコンテンツのみ)。そのため、入力フィールドを変更しても、監視可能なプロパティ値は変更されません。

入力をobservableにバインドする必要があります。これが実用的なフィドルです

http://jsfiddle.net/w7WQh/

于 2013-03-12T05:10:02.630 に答える