2011-11-14 32 views
51

Mã này ném lỗi (trong Chrome): "Không thể tìm thấy thẻ đóng bình để phù hợp: ko foreach: MyPlans":Knockout.js containerless "foreach" không làm việc với <table>

<table> 
    <!-- ko foreach: MyPlans --> 
    <tr> 
     <td>Test</td> 
    </tr> 
    <!-- /ko --> 
</table> 

Nếu tôi sử dụng một thay vào đó, tất cả mọi thứ hoạt động:

<ul> 
    <!-- ko foreach: MyPlans --> 
    <li> 
     Test 
    </li> 
    <!-- /ko --> 
</ul> 

Tôi muốn sử dụng bộ lọc không có thùng chứa bàn. Có điều gì tôi đang làm sai? Nó là một lỗi?

Trả lời

87

Điều này liên quan đến thực tế là trình duyệt tự động chèn các thẻ tbody, điều này tạo ra sự không phù hợp trong nhận xét. Kết quả trả lại sẽ trông giống như:

<table> 
    <!-- ko foreach: MyPlans --> 
    <tbody> 
    <tr> 
     <td>Test</td> 
    </tr> 
    <!-- /ko --> 
    </tbody> 
</table> 

Steve đã đưa một số công việc vào cố gắng để sửa thẻ không phù hợp trong KO, nhưng điều đơn giản nhất để bạn có thể làm là hãy thêm các tbody mình hoặc thêm tbody và đưa bạn ràng buộc trên đó.

<table> 
    <tbody data-bind="foreach: MyPlans"> 
    <tr> 
     <td>Test</td> 
    </tr> 
    </tbody> 
</table> 

Hợp pháp để bàn có nhiều thẻ tbody, nếu cần.

+1

Cảm ơn bạn! Điều này xóa mọi thứ lên một chút. Tôi chắc chắn sẽ kiểm tra đánh dấu thực tế cẩn thận hơn về phía trước. – Jag

+0

Vì RP đề cập đến việc có nhiều thẻ 'tbody' hợp pháp. Sẽ hữu ích khi nhóm các hàng, [ở đây] (http://www.w3.org/TR/html401/struct/tables.html#h-11.2.3) là nhiều thông tin hơn. –

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