敲除 foreach 将行号添加到网格

knockout foreach add row number to grid

我有一个在数组中填充数组的网格。 它根据一个数组创建,然后用另一个数组填充该列。

 <div id="formula" data-bind="with:currentFormula">
        <!-- ko foreach:$parent.tones-->
        <div class="col-sm-2" data-bind="foreach:$parents[1].levels">
            <a href="#" class="thumbnail img-responsive" data-bind="click: $root.hasCurrent() ? $root.currentFormula().setEnding.bind($index(),$parentContext.$index())  : $root.currentFormula().setStarting.bind($index(),$parentContext.$index())">
                <img data-bind="attr:{ src: '/Content/images/colors/' +  $index() +  $parentContext.$index() + '.png' }" alt="" />
            </a>
        </div>
        <!-- /ko-->
    </div>

我需要做的是在第 1 列之前创建一个新列并添加 $index() + 1,否则行号将适用于该列。

我找遍了,没有找到任何有用的东西。

我该怎么做?

据我所知,您的行是根据 <!-- ko foreach:$parent.tones--> 中的 currentFormula.tones 创建的,列是基于 tones.levels 创建的。因此,您应该创建一个 div,仅当第一个 level(列)时才将其文本绑定到 $index() + 1。为此,您需要移动循环以在代表该列的 div 上方创建列。

像这样:

<div id="formula" data-bind="with: currentFormula">
    <!-- ko foreach:$parent.tones-->
        <!-- ko foreach:$parents[1].levels -->
            <!-- If this is the first level/column, then create a new column to show rownum  -->
            <div class="col-sm-2" data-bind="if: $index() == 0, text: 'Row ' + $parent.$index() + 1"></div>
            <!-- Normal column creation -->
            <div class="col-sm-2" >
                <a href="#" class="thumbnail img-responsive" data-bind="click: $root.hasCurrent() ? $root.currentFormula().setEnding.bind($index(), $parentContext.$index()) : $root.currentFormula().setStarting.bind($index(), $parentContext.$index())">
                    <img data-bind="attr: { src: '/Content/images/colors/' + $index() + $parentContext.$index() + '.png' }" alt="" />
                </a>
            </div>
        <!-- /ko-->
    <!-- /ko-->
</div>