我正在使用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循环绑定中排除。但我不想在我的情况下使用这个。谁能告诉我这里我做错了什么?
答案 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]
版本,因为它在您尝试做的事情上更加清晰。