2

私はノックアウトを使用しており、配列「プロパティ」を持ち、各「プロパティ」は子「プロパティ」を持つことができます

継承する必要がある配列「TabID」のプロパティがあることを除いて、すべて問題ありません。たとえば、親の「プロパティ」で変更された場合、子の「プロパティ」でも変更する必要があります。

計算されたものを作成することで、これを機能させようとしました。

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;
}

また、親が関数内から子を追加することを呼び出していたため、「これ」だけを使用できないことにも気付きました。

私の親財産は今です

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]));
}

これは完全に機能します。親タブ ID が変更された場合、値は子プロパティに反映されます。$parentContext.$index() でアクセスした foreach ループ内の親インデックスのみが本当に必要でした

于 2012-06-13T07:35:36.027 に答える