2

我已经包含了一个代码片段,它演示了我正在尝试解决的问题。我正在尝试根据observableArray. 我尝试过使用 Knockoutif绑定,但这在foreach. 这看起来应该很简单,但由于某种原因,我无法弄清楚如何在 Knockout 领域内完成这项工作。

function ViewModel() {
    var self = this;
    
    self.People = ko.observableArray([1, 2, 3, 4, 5]);
}

var viewModel = new ViewModel();

ko.applyBindings(viewModel);
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<h4>Current</h4>

<div class="row">
    <div class="col-xs-12" data-bind="foreach: People">
        <p data-bind="text: $data"></p>
    </div>
</div>

<h4>Desired</h4>

<div class="row">
    <div class="col-xs-12">
        <div class="row">
            <div class="col-xs-6">1</div>
            <div class="col-xs-6">2</div>
        </div>
        <div class="row">
            <div class="col-xs-6">3</div>
            <div class="col-xs-6">4</div>
        </div>
        <div class="row">
            <div class="col-xs-6">5</div>
        </div>
    </div>
</div>

4

1 回答 1

3

试试看:

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

提琴手

于 2015-01-27T17:57:36.807 回答