ko.mapping ユーティリティを使用してモデルをセットアップしています。
プライマリ データを渡すときは、プロパティの 1 つを配列と見なします。この配列は 1 週間の 7 日ごとに 1 つのオブジェクトであるため、このセットは変更も再配置もされないことがわかっています。フラット化されたプロパティを持つ JSON オブジェクトのコピーとして、または観察されたプロパティまたはフラットなプロパティを持つ observableArray として、この配列を簡単に生成できますが、マッピング ユーティリティを介してできないように見えるのは、以下を組み合わせたフラットな配列を作成することです基本特性と観測特性の両方。
マッピングオプションのさまざまな順列を試みましたが、この複雑なモデルを思い通りに正確にマッピングしたいという私の絶え間ない肛門の衝動を噛むことなく、この配列をマッピングする必要があるかのように見えますマップします。
問題をより適切に表示するには:
var PrimaryViewModelMapping = {
copy: ['KeyProperty', 'ArrayOfDays'],
create: function(options) { return new PrimaryViewModel(options.data); }
}
これにより、PrimaryViewModel のインスタンスで配列のフラット コピーが得られますが、PrimaryViewModel の宣言で配列をループして何かを実行することなく、ArrayOfDays 内のプロパティを制御することはできません。
続ける:
var PrimaryViewModelMapping = {
copy: ['KeyProperty'],
observe: ['ArrayOfDays'],
create: function(options) { return new PrimaryViewModel(options.data); }
}
これにより、ArrayOfDays が監視可能な配列として適切にパッケージ化されますが、その「各」プロパティはすべてフラット化されたままになります。
次の試みは次のとおりです。
var PrimaryViewModelMapping = {
copy: ['KeyProperty'],
'ArrayOfDays': {
copy: ['Date'],
observe: ['TotalDuration'],
create: function(options) {
return new DayArrayModel(options.data);
}
}
}
これにより、観測可能な配列が作成され、観測されるもの (TotalDuration) と観測されないもの (KeyProperty) を完全に制御できるようになり、オブジェクト DayArrayModel の宣言内で、他にやりたいことがほぼ何でもできます...
しかし、ArrayOfDays はまだ監視可能な配列です。私はそれを必要としませんし、本当にしたくもありません。
ここでのトピックはマッピング プラグインに固有のものであり、これを処理するために PrimaryViewModel 宣言内でループを作成したくないことを理解してください。「機能要求」に出くわしたのか、それとも単にそれを取得していないのか疑問に思っています.
ありがとう。