2

我正在使用淘汰赛并有一个数组“属性”,每个“属性”都可以有子“属性”

一切都很好,除了应该继承数组“TabID”的一个属性 - 例如,如果它在父“Property”上更改,它也应该在子“Property”上更改

我试图通过使用创建计算来使其工作,例如。

this.TabID = ko.computed(function(){
return $parent.TabID();
});

然后意识到 $parent 仅在 foreach 循环中可用

我也尝试过在构造函数中传递父级,例如

var childproperty = function(parent,[other properties]){
this.TabID = ko.computed(function(){
return parent.TabID(); // OR return parent.TabID;
}

有人可以指出我正确的方向吗?作为旁注,我还需要能够访问父级以进行基于零的 [i] 计算

也就是说,每个父属性应该是 properties[i].propitem 其中 i = 基于每个父级 + 它们的子级属性的计算值

例如:如果父属性 1 有 3 个子属性,那么父属性 1 应该是 i=0,子属性 (i=1,2,3),然后父属性 2 的“i”应该是 4

我知道...我要求不高,我并不期待我的问题有一个完美的解决方案,但如果有人至少能指出我正确的方向,我将非常感激。

干杯。

4

1 回答 1

2

我已经设法通过使用以下方法来解决这个问题,希望这会帮助其他遇到同样问题的人

var childproperty = function(parent,[other properties]){
this.parent = ko.observable(parent);
this.TabID = ko.computed(function(){
return this.parent().TabID(); // OR return parent.TabID;
}

我还注意到,因为我的父母正在调用从函数中添加孩子,所以我不能只使用“this”

我的父母财产现在是

var parentproperty = function([properties]){
var p = this;
p.childproperties = ko.observableArray();
p.TabId = ko.observable(1);
p.addChild = function(){
p.childproperties.push(new childproperty(p,[other properties]));
}

这完美地工作 - 如果父 tabid 更改,则值由子属性反映。我只需要使用 $parentContext.$index() 访问的 foreach 循环中的父索引

于 2012-06-13T07:35:36.027 回答