8

目前我有:

<div data-bind="foreach: list">
</div>

并且需要:

<div data-bind="foreach: /* 1st half of the list */">
</div>
<div data-bind="foreach: /* 2nd half of the list */">
</div>

避免使用 2 个单独的可观察对象或计算对象会很棒。

4

4 回答 4

12

您可以使用数组slice方法创建两个集合:

<div data-bind="foreach: list.slice(0, list.length / 2) ">
    <span data-bind="text: $data" />
</div>
<div data-bind="foreach: list.slice(list.length / 2)">
    <span data-bind="text: $data" />
</div>

如果你有一个可观察的数组,你需要稍微修改你的绑定:

<div data-bind="foreach: list.slice(0,list().length / 2) ">
    <span data-bind="text: $data"/>
</div>
<div data-bind="foreach: list.slice(list().length / 2)">
    <span data-bind="text: $data"/>
</div>

演示JSFiddle

于 2013-03-05T08:45:21.837 回答
3

您可以只使用 mod 2,如下所示:

<div data-bind="foreach: list">
    <!--ko if: $index() % 2 == 0 -->
    <div class="row">
        <div class="col-md-6">
            <span data-bind="text: $data"></span>
        </div>
        <div data-bind="with: $parent.list()[$index()+1]" class="col-md-6">
            <span data-bind="text: $data"></span>
        </div>
    </div>
    <!--/ko-->
</div>

小提琴:http: //jsfiddle.net/robgallen/1728389j/

于 2015-11-19T12:33:51.447 回答
2

使用可观察数组的安全且干净的示例

<!-- ko with: myObservableArray -->
    <div data-bind="foreach: $data.slice(0, $data.length / 2)">
        <span data-bind="text: $data"/>
    </div>
    <div data-bind="foreach: $data.slice($data.length / 2)">
        <span data-bind="text: $data"/>
    </div>
<!-- /ko -->
于 2014-09-04T02:27:56.643 回答
0

只需制作一个包含一行和两个单元格的外部表在第一个单元格内放置另一个只有偶数索引的表。在第二个单元格中绑定到奇数索引。

        <table style="table-layout:fixed;">
            <tr>
                <td>
                    <table style="table-layout:fixed;">
                        <tbody data-bind="foreach: someObservableArray">
                            <!--ko if: $index() % 2 == 0 -->
                            <tr>
                                <td data-bind="text: somePropertyInArrayObject"></td>                                 
                            </tr>
                            <!--/ko-->
                        </tbody>
                    </table>
                </td>
                <td>
                    <table style="table-layout:fixed;">
                        <tbody data-bind="foreach: someObservableArray">
                            <!--ko ifnot: $index() % 2 == 0 -->
                            <tr>
                                <td data-bind="text: somePropertyInArrayObject"></td>                                    
                            </tr>
                            <!--/ko-->
                        </tbody>
                    </table>
                </td>
            </tr>
        </table>
于 2016-05-23T17:26:13.180 回答