私はこのようなものでノックアウトjsのモデルを持っています:
var Model = function(model)
{
var self = root = this;
self.ObjectA = new ObjectA(model.ObjA);
self.includeImage = function(image){
self.ObjectA.Images.push(image);
}
}
var ObjectA = function(objA){
var self = this;
self.Images = ko.observableArray();
self.ObjectB = ko.observableArray(ko.utils.arrayMap(objA.ObjectsB, function(ob){
return new ObjectB(ob);
}));
}
var ObjectB = function(objB){
var self = this;
self.ObjectC = new ObjectC(objB.objC);
}
var ObjectC = function(objC){
var self = this;
self.ImagesC = ko.utils.arrayMap(objC.ImagesC, function(img){
return new Image(img);
});
}
var Image = function(image){
var self = this;
self.Key = image.Key;
self.Value = image.Value;
self.Url = image.Url;
}
そして、私はこのHTMLをテーブルに置いています:
<tbody data-bind="foreach: ObjectA.ObjectB">
<tr>
<td>
<!-- ko if: ObjectC.Images.length > 0 -->
<div>
<img data-bind="attr: { src: ObjectC.Images[0].Url }" />
<button data-bind="click: root.includeImage">include</button>
</div>
<div data-bind="foreach: ObjectC.Images">
<!-- ko if: $index() !== 0 -->
<div>
<img data-bind="attr: { src: Url }" />
<button data-bind="click: root.includeImage">include</button>
</div>
<!-- /ko -->
</div>
<!-- /ko -->
</td>
</tr>
</tbody>
私が抱えている問題は、関数includeImageであり、受け取るパラメータはObjectCの画像ではありません。パラメータはObjectB型です。なぜですか?そのいくつかのforeachが壊れていますか?