10

原始问题

是否有人拥有或知道用于淘汰赛的绑定,该绑定将允许类似于 for 循环的行为?我可以让 foreach 做我想做的事,但如果我不必那样做就好了。

编辑 2

我正在尝试根据用户所做的选择创建表行。在某些情况下,我需要 x 行,其中 x 是数组的长度,有时 x 表示显示 n 个数组所需的最大行数。

例如:image1 是基于 4 个不同的数组构建的,它们的大小都不同 image2 是从同一个数组构建的,在这种情况下是双倍的。

在此处输入图像描述 在此处输入图像描述

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

以上工作正常并创建了我想要的,但我不喜欢将 selectedTab.runners 从一个数字变成一个空数组,只是为了让它循环 n 次来创建行。我愿意接受建议。注意截至我最初发布这个问题时,我已经对这段代码进行了相当大的修改,现在只发生了一次与我最初的问题相关的事件。

4

3 回答 3

13

我的重复绑定正是这样做的。

<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>
于 2013-04-19T00:01:24.740 回答
6

您可以创建一个数组对象:

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

这将为the_length_you_need次打印一颗星

于 2016-04-21T17:16:01.057 回答
4

你可以这样做:

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

你会得到元素0-4。

但是,正如克里斯在评论中所说,这似乎很奇怪。告诉我们您要做什么,我们会为您指明正确的方向。

于 2013-04-18T20:17:38.960 回答