2017-11-10 10 views
0

次の表があります。2回のコレクションのノックアウトjsで一度に反復を行う

<tbody data-bind="foreach: TuDispTexts, foreach: ApplicationTexts"> 
    <tr> 
     <td data-bind="text: DictionaryTextId"></td> 
     <td><input data-bind="value: TuDispTexts.Culture" type="text"/></td> 
     <td><input data-bind="value: TuDispTexts.DictionaryValue" type="text" /></td> 
     <td><input data-bind="value: ApplicationTexts.DictionaryValue" type="text" /></td> 
    </tr> 
</tbody> 

2つのコレクションを一度に繰り返して、2つの名前にアクセスすることは可能ですか?提案された解決策は機能していません。

モデルを定義する機能。

function tuDispModel() { 
     this.AetrState = ko.observable(); 
     this.TuDispTexts = ko.observable; 
     this.ApplicationTexts = ko.observable(); 

     this.texts = ko.pureComputed(function() { 
      return tuDispInfo.TuDispTexts.map(function (tu, index) { 
       return { tu: tu, app: tuDispInfo.ApplicationTexts[index] }; 
      }); 
     }) 

; }

通話の発注。

$(document).ready(function() { 
     tuDispInfo = new tuDispModel(); 
     getTuDispData(corewebApiUrl, tuDispId); 
     ko.applyBindings(tuDispInfo); 
    }); 
+0

vm.texts = ko.pureComputed(function() { return vm.TuDispTexts.map(function(tu, index) { return {tu: tu, app: vm.ApplicationTexts[index]}; }); }); 

... @NisargShah:(これはスケッチ、あなたは自分のプロジェクトにplunkできない完璧なコードです)。私の場合はどのようにしてその特色に行くことができますか? – maciejka

+0

適切な配列項目にバインドするために 'with:$ root.arr1()[$ index()]'を使用して、通常は 'text:Culture'のようなプロパティにアクセスできます。 – Nisarg

+0

@NisargShahあなたが得る方法の例を書くことができますか? – maciejka

答えて

1

TuDispTextsApplicationTextsを並列コレクションであると仮定すると、番号(例えば、TuDispTexts[0]TuDispTexts[1]ApplicationTexts[1]などに関し、ApplicationTexts[0]に関し)、あなたはそれらの両方を参照する計算されたコレクションを作成したいと思うし、それを繰り返します。

など。彼らは、インデックスによって配列に取得与えられたsoltionで、その後

<tbody data-bind="foreach: texts"> 
    <tr> 
     <td data-bind="text: /*Unclear where this comes from: DictionaryTextId*/"></td> 
     <td><input data-bind="value: texts.tu.Culture" type="text"/></td> 
     <td><input data-bind="value: texts.tu.DictionaryValue" type="text" /></td> 
     <td><input data-bind="value: texts.app.DictionaryValue" type="text" /></td> 
    </tr> 
</tbody> 
+0

このvm.textsはJS関数ですか?$ root.ApplicationTexts()[$ index()] DictionaryValue}それはタグスクリプトにすべきでしょうか? – maciejka

+0

@maciejka:そのブロックはJavaScriptです。あなたのビューモデルにそれを含めて、必要な変更を行います。 –

+0

問題が更新されました。表示されておらず、マッピングに問題があります。 tuDispInfo.TuDispTexts.mapは関数ではありません – maciejka

関連する問題