2012-06-14 31 views
7

Tôi chỉ gặp phải sự cố khác với danh sách có thể sắp xếp giống như việc cần làm của tôi được tạo bằng plugin Knockout và Knockout-sortable.Knockout "if" binding không hoạt động với biểu thức trong danh sách có thể sắp xếp?

Tôi cần đặt dấu phân cách màu đỏ trong phần tử được đặt trong thời gian hiện tại và hủy sắp xếp nếu phần tử bị xóa trước dấu phân cách đó.

Tôi đã thử với một ràng buộc "có thể nhìn thấy" và nó hoạt động theo một cách nào đó, nhưng ràng buộc visibile chỉ ẩn phần tử DOM và nó mess lên arrayIndex sắp xếp, thêm yếu tố không cần thiết cho nó.

<div class="delimiter" data-bind="visible: time() == $root.limit()"></div> 

Các "nếu" ràng buộc sẽ tốt hơn vì nó chèn phần tử DOM chỉ khi cần thiết, nhưng sự biểu hiện tôi sử dụng với thể nhìn thấy luôn được đánh giá là true và tôi không thể tìm ra lý do tại sao ...

<div class="delimiter" data-bind="if: time() == $root.limit()"></div> 

đây là fiddle: http://jsfiddle.net/ingro/VaqqF/

Any help is appreciated, cảm ơn bạn!

Trả lời

17

Bạn vừa hiểu nhầm nếu ràng buộc: Nó loại bỏ nội dung của nút mà nó đã được áp dụng, chứ không phải chính nút đó. Nếu bạn muốn xóa nút mà không tạo trình bao bọc xung quanh (mà bạn có thể sử dụng để thêm liên kết), cũng có phiên bản nhận xét của if-binding, được gọi là cú pháp dòng chảy kiểm soát không chứa :

<!-- ko if: time() == $root.limit() --> 
    <div class="delimiter"></div> 
<!-- /ko --> 

http://jsfiddle.net/VaqqF/11/

Ref: http://knockoutjs.com/documentation/if-binding.html

+0

Vâng, tôi thực sự hỏng thế này, cảm ơn cho lời giải thích! :) – Ingro

+1

Cảm ơn điều này, ví dụ trong tài liệu không rõ ràng: http://knockoutjs.com/documentation/if-binding.html Chúng sử dụng liên kết "if" để hiển thị/ẩn văn bản bên trong div (về mặt kỹ thuật) Nội dung của nó). Một ví dụ tốt hơn sẽ được ràng buộc dữ liệu một div với một span bên trong và div bên ngoài có một màu nền (hoặc một cái gì đó). –

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