私はobservableArrayでforeachバインディングを使用すると、observableArrayに加えられた変更が画面に反映されないことがあります。foreachを使用しているときにKnockoutJS observableArrayバインディングが更新通知されない
この様結合ルックス:
<div data-bind="foreach: items">
<p>
<input data-bind="value: name" />
</p>
<p>Name: <span data-bind="text: name"></span></p>
<br />
</div>
observableArrayは次のようになります。ここでは
this.items = ko.observableArray([
{ name: 'Person 1', role: 'Sales' },
{ name: 'Person 2', role: 'Accounts' },
{ name: 'Person 3', role: 'Admin' }
]);
は、問題を説明するためにJSFiddleです: https://jsfiddle.net/ue3opdd2/2/
はHTMLがに分割され、水平断面を使用して2つのセクション。セクション1では、オブザーバブルを使用するバインディングがあります。テキストボックスを変更すると、下のspan要素に反映された変更が表示されます。これは機能しています。
セクション2では、observableArrayとforeachバインディングを使用していますが、まったく同じプリンシパルです。たとえば、「Person 1」テキストボックスの値を変更すると、この変更が下のspan要素に反映されていると見られますが、機能しません(「Name:Person 1」のままです)。
私は画面の下部にデバッグ出力を入れましたが、そこにobservableArrayアップデートの値が表示されません。
私が見ることができる主な違いは、observableArrayが「複合型」であることです。これは、各要素が名前と役割を含むオブジェクトで構成されていることを意味します。これは違いをもたらすだろうか?
誰でもこの作業をしてください。
をよく – Nkosi