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

6
我正在使用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循环绑定中排除。但在我的情况下,我不想使用这个属性。请问有人能告诉我我在这里做错了什么吗?

你能避免使用foreach,只需执行类似于<span data-bind="text: myArray()[0], visible: true"></span>的操作吗? - Kal_Torak
如果myArray是一个可观察对象,不要忘记必须像调用函数一样调用它才能访问索引。另外,你在Chrome中运行并检查控制台了吗(F12)?它给出了什么错误? - Kal_Torak
1个回答

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] 版本,因为这样更清晰地表明了您要做什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接