2013-03-02 33 views
6

Tôi đang sử dụng knockout-2.2.0.js. Tôi đã tạo ra một vòng lặp foreach ràng buộc trên observableArray và tôi muốn chỉ hiển thị phần tử đầu tiên trong mảng. Đối với điều này tôi đã cố gắng: (cả hai không làm việc)Làm cách nào để chỉ hiển thị phần tử đầu tiên trong liên kết vòng lặp foreach?

Đầu tiên

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

Second

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

Tôi biết rằng có một tài sản mà nếu đặt trên bất kỳ phần tử mảng hơn yếu tố đó sẽ _destroy bị loại trừ khỏi ràng buộc vòng lặp foreach trong giao diện người dùng. Nhưng tôi không muốn sử dụng điều này trong trường hợp của tôi. Ai có thể vui lòng cho tôi biết tôi đang làm gì sai ở đây?

+0

Bạn có thể tránh thực hiện việc foreach và chỉ cần thực hiện điều gì đó như '' –

+0

Nếu myArray là một quan sát được, đừng quên bạn phải gọi nó như một hàm để truy cập các chỉ mục. Ngoài ra, bạn có chạy nó trong Chrome và kiểm tra bảng điều khiển (f12) không? Lỗi gì cho bạn? –

Trả lời

15

Bạn đang đi đúng hướng. Nhưng bạn đã quên để đưa ra các () trong cả hai ví dụ của bạn.

myArray mảng quan sát được và $index là một quan sát vì vậy chúng là hàm nên bạn cần gọi chúng là hàm với () để nhận giá trị bên trong biểu thức.

Vì vậy, các ràng buộc đúng là:

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

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

Demo JSFiddle.

Lưu ý: nếu bạn thực sự chỉ muốn hiển thị mục đầu tiên thì bạn nên thích phiên bản text: myArray()[0] vì nó sạch hơn nhiều so với những gì bạn đang cố gắng làm.

Các vấn đề liên quan