2013-04-18 9 views
9

元の質問ノックアウト 'for'バインディング?

は、いずれかが持っているか、forループと同様の挙動を可能にするためにノックアウトバインディングを知っていますか?私はforeachを私がしたいことをすることができますが、私がそうする必要がなければそれはいいでしょう。

編集2

私は、ユーザーが行う選択に基づいてテーブルの行を作成しようとしています。場合によってはx行が必要です。ここで、xは配列の長さ、xはn個の配列を表示するのに必要な最大行数を表します。

例:image1は、サイズが異なる4つの異なる配列に基づいて構築されます。 image2は同じ配列から構築され、この場合は倍増します。

enter image description here enter image description here

<div data-bind="if: selectedTab()"> 
<table> 
<thead> 
    <tr> 
    <td> 
     <div class="a-i-post-All"></div> 
    </td> 
    <!-- ko foreach:$root.selectedTab().races--> 
    <td> 
     <input type="checkbox" /> 
    </td> 
    <!-- /ko --> 
    </tr> 
</thead> 
<tbody data-bind="foreach: selectedTab().runners"> // <-- This is an empty array created by the max number of Runners in the selectedTabs array of Races 
    <tr> 
    <td> 
     <div class="a-i-post"></div> 
    </td> 
    <!-- ko foreach:$root.selectedTab().races--> 
    <td> 
     <!-- ko if: Runners.length > $parentContext.$index()--> 
     <input type="checkbox" /> 
     <!-- /ko --> 
    </td> 
    <!-- /ko --> 
    </tr> 
</tbody> 

上記正常に動作し、私が欲しいものを作成しますが、私はちょうどそれのループをn回行うために、空の配列に番号からselectedTab.runnersをオンにする必要が好きではありません行を作成します。私は提案のために開いています。 注:この質問を投稿した時点で、私はこのコードをかなり改訂しました。私の最初の質問に関連するのは1つだけです。

+0

なぜあなたは$インデックスでのforeachを使用しないために星を出力します

<!-- ko foreach: new Array(the_length_you_need) --> <span>&#9733;</span> <!-- /ko --> 

を? –

+0

私は配列ではなく数字でforeachすることができます。 – Zholen

+2

これはKnockoutの目的ではありません。私はJavaScriptで定義された 'x '回何かを繰り返す必要がある現実世界の例を考えようとしています。ビューが最初に生成されたときに単純にサーバー側で行うことはできません。私は迷っている。おそらく、あなたが本当にやろうとしていることを実際に教えてくれたら、誰かがあなたに良い方法を示すことができます。 –

答えて

12

私のRepeatはこれを正確に行います。

<tbody> 
    <tr data-bind="repeat: { foreach: selectedTab().runners, index: '$runner' }"> 
    <td> 
     <div class="a-i-post"></div> 
    </td> 
    <td data-bind="repeat: selectedTab().races"> 
     <!-- ko if: $item().Runners.length > $runner --> 
     <input type="checkbox" /> 
     <!-- /ko --> 
    </td> 
    </tr> 
</tbody> 
あなたはArrayオブジェクトを作成することができます
+0

私の最初の質問にお答えいただき、ありがとうございます。これは私の望むことをしているようですが、現時点では私のコードを書き直して、そのようなアクションをもう処理する必要はないでしょう。 – Zholen

+0

それは本当に興味深いマイケルに見えます! –

3

あなたはこのような何か行うことができます。

<div data-bind="foreach: [0,0,0,0,0]"> 
    <span data-bind="text: $index"></span> 
</div> 

をそして、あなたは要素0-4を得るでしょう。

しかし、クリスはコメントで言ったように、これは奇妙に思えます。あなたがしようとしていることを教えてください。正しい方向を指します。

4

:これはthe_length_you_need

関連する問題