如何只显示foreach循环绑定中的第一个元素?

时间:2013-03-02 08:01:07

标签: javascript jquery knockout.js

我正在使用knockout-2.2.0.js。我在observableArray上创建了一个foreach循环绑定,我想只显示数组中的第一个元素。为此我试过:(两个都不起作用)

首先

        <!-- ko foreach: myArray -->
          <span data-bind="text: $data, visible: $index == 0"></span>
        <!-- /ko -->

第二

        <span data-bind="text: myArray[0]"></span>       

我知道有一个_destroy属性,如果设置在任何数组元素上,那么该元素将从UI中的foreach循环绑定中排除。但我不想在我的情况下使用这个。谁能告诉我这里我做错了什么?

1 个答案:

答案 0 :(得分:15)

你走在正确的轨道上。但是你忘了在两个例子中都提出()

myArray一个可观察的数组,$index是一个可观察的,因此它们是函数,所以你需要将它们作为函数调用()来获取它们在表达式中的值。

所以正确的绑定是:

<!-- ko foreach: myArray -->
    <span data-bind="text: $data, visible: $index() == 0"></span>
<!-- /ko -->

<span data-bind="text: myArray()[0]"></span>  

演示JSFiddle

注意:如果您真的只是想显示第一个项目,那么您应该更喜欢text: myArray()[0]版本,因为它在您尝试做的事情上更加清晰。