2つの配列を持つビューモデルがあります。一方の配列を反復処理して、もう一方の配列の同じインデックスの値にアクセスしたいのですが、で使用できないよう$parent
です$index
。ここを参照してください:
function viewModel(factors,models) {
this.name="parent View model";
this.factors = ko.observableArray(factors);
this.models = ko.observableArray(models);
}
function subViewModel(name, array) {
this.anotherArray = ko.observableArray(array);
this.name = name;
}
ko.applyBindings(new viewModel(
["factor1","factor2"],
[ new subViewModel("model1", ["foo","bar"]),
new subViewModel("model2", ["one","two"])
]));
<div data-bind="text:name"></div><hr/>
<div data-bind="foreach:models">
<div data-bind="text: $parent.factors()[$index]"></div>
<div data-bind="text:name"></div>
<hr/>
</div>
に変更$parent.factors()[$index]
すると、配列$parent.factors()[0]
から正しいエントリが表示されます。factors
だけに置き換えると$index
、適切なインデックスが得られます。しかし、それらを組み合わせると、ノックアウトは$index
すでに持っている式で解析できないよう$parent
です。
他の誰かがこれを見ましたか?
配列を組み合わせて、プロパティを組み合わせたビューモデルの単一の配列にすることができることはわかっていますが、そうしない理由があります。これは、はるかに複雑なビューモデルの一部です。