2012-08-24 36 views
10

Tôi có đoạn trích sau từ bảng mà tôi đang sử dụng để hiển thị nhiều tệp được truy xuất từ ​​máy chủ, sử dụng MVC 4 và knockout.js phiên bản thư viện 2.1.0.forout knockout.js lặp lại phần tử td trong bảng, nhưng không phải phần tử tr

<tr data-bind="foreach: files, visible: (files() && files().length > 0)"> 
     <td data-bind="text: UploadPath" /> 
     <td data-bind="text: FileName" /> 
    </tr> 

Dữ liệu được truy xuất đúng cách, tuy nhiên foreach lặp lại các phần tử TD trong bảng chứ không phải là TR. Vì vậy, nếu có 100 tệp, sẽ có 200 cột trong bảng được hiển thị cho người dùng. Làm thế nào để làm cho phần tử TR lặp lại tập tin foreach?

Trả lời

23

một cách đơn giản là "foreach" ràng buộc trong (ngoài) phần tử tiếp theo:

<table data-bind="foreach: files, ..."> 
    <tr> 
     ... 

Bạn cũng có thể sử dụng một yếu tố ảo:

<!-- ko foreach: files --> 
<tr> 
    <td> 
     ... 
</tr> 
<!-- /ko --> 
+0

Tôi đã nghiêng theo cách đó, nhưng tôi không biết liệu tôi có muốn tiếp theo một bảng khác hay không chỉ để hiển thị dữ liệu tệp. Cảm ơn bạn về sự phản ứng nhanh. –

1

Tôi đã xem qua một điều kỳ lạ:

Tôi đã cố gắng sử dụng liên kết không chứa hàng để lặp lại nhiều hàng trong bảng. KO phàn nàn rằng nó không thể tìm thấy thẻ đóng/ko.

Tôi đã có tiêu đề bảng được xác định phía trên ràng buộc không chứa hàng. Nếu tôi thay đổi điều này thành một hàng bảng tiêu chuẩn, mọi thứ hoạt động như mong đợi (ngoại trừ tiêu đề của tôi không có kiểu dáng bắt buộc nhưng tôi ghi đè lên).

Hy vọng điều này sẽ giúp người khác đấu tranh với điều này - đó chỉ là giải pháp thay vì sửa chữa.

+0

Chạy vào cùng một thứ, giải pháp ở đây: http://stackoverflow.com/a/8116017/423231 –

+0

Cảm ơn bạn. Tôi nghĩ rằng tôi đã nghiên cứu nó khá kỹ lưỡng nhưng rõ ràng là không! Điều này thật ý nghĩa ngay lúc này. – mhall

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