ブートストラップカルーセルを使用して、各カルーセル項目に2列のデータを表示します。これは私がやっているの簡単な例です:データをノックアウト付きの2つのブートストラップカラムに分割する
<div class="carousel-inner col-sm-12" role="listbox" data-bind="foreach: { data: dataSlides, as: 'slide' }">
<div class="item" data-bind="css: { active: $index() == 0 }">
<div class="col-sm-6" data-bind="foreach: { data: dataLeft, as: 'data' }">
<div data-bind="text: data"></div>
</div>
<div class="col-sm-6" data-bind="foreach: { data: dataRight, as: 'data' }">
<div data-bind="text: data"></div>
</div>
</div>
</div>
と私が持っているデータモデル、この構造体を使用しています。
self.dataSlides = ko.observableArray(
[
{ dataLeft: ['data 1', 'data 2', 'data 3'], dataRight: ['data 4', 'data 5', 'data 6'] },
{ dataLeft: ['data 7', 'data 8', 'data 9'], dataRight: ['data 10', 'data 11', 'data 12'] }
]);
これは期待通りに動作しますが、1つの問題で。私のデータ<div data-bind="text: data"></div>
を表示している部分は、実際の実装ではかなり複雑です。ご覧のとおり、2回書く必要があります。私の左のデータと右のデータのために一度。
私のやりたいことは、データを1つのデータ配列(dataLeft/dataRightなし)に入れて、データの左半分を残りの半分を右列に表示することです。この方法では、データ表示ループを2回書く必要はありません。
これを行うには、foreachがデータの半分を通過しているときに何らかの形で列タグを閉じて再度開く必要があります。私は以下を試しましたが、これはforeachを壊すので動作しません:
<!-- ko if: $index() == data().length/2 -->
</div>
<div class="col-sm-6">
<!-- /ko -->
どうすればいいですか?
も 'データ()。'lenght'は' length 'でなければなりません。 – gkb