ko.observableArray を使用して JSON データを直接変換できる場合、JSON をノックアウト オブジェクトに変換するためにマッピング プラグインが使用されていることがわかっているため、マッピング プラグインの用途は何ですか。KO初心者でよくわからない
質問する
211 次
1 に答える
2
の要素observableArray
自体は自動的に観察可能ではありません。サブスクリプション (バインディングを含む) はobservableArray
、配列自体の変更 (要素の追加や削除など) には応答しますが、個々の要素のコンテンツの変更には応答しません。後者が必要な場合は、配列内の各オブジェクトの (関連する) プロパティをobservable
s に変換する必要があります。これは、マッピング プラグインが実行します。
検討:
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 に答える