2

ko.observableArray を使用して JSON データを直接変換できる場合、JSON をノックアウト オブジェクトに変換するためにマッピング プラグインが使用されていることがわかっているため、マッピング プラグインの用途は何ですか。KO初心者でよくわからない

4

1 に答える 1

2

の要素observableArray自体は自動的に観察可能ではありません。サブスクリプション (バインディングを含む) はobservableArray、配列自体の変更 (要素の追加や削除など) には応答しますが、個々の要素のコンテンツの変更には応答しません。後者が必要な場合は、配列内の各オブジェクトの (関連する) プロパティをobservables に変換する必要があります。これは、マッピング プラグインが実行します。

検討:

var vm={};
vm.dummy=[{num:'one'}, {num:'two'}, {num:'three'}, {num:'four'}];
// Create observableArray of plain objects
vm.oa1=ko.observableArray(vm.dummy);
// Create observableArray of objects with observable properties
vm.oa2=ko.mapping.fromJS(vm.dummy);
ko.applyBindings(vm);

一緒に:

<ul data-bind="foreach: oa1"><li data-bind="text: num"></li></ul>
<ul data-bind="foreach: oa2"><li data-bind="text: num"></li></ul>

コンソールで:

vm.oa1()[1].num = 'five'

表示は何も変わらない

vm.oa1()[1].num

vm.oa1()[1].num('five');

要素がオブザーバブルではないため、エラーが発生しました

vm.oa2()[1].num('five');

2 番目のリストが変更されます

于 2013-11-12T15:50:07.097 に答える