7

我刚刚在使用 Knockout 和 Knockout-sortable 插件制作的类似待办事项的可排序列表中遇到了另一个问题。

我需要在当前时间放置的元素下放置一个红色定界符,如果在该定界符之前删除了一个元素,则取消排序。

我尝试使用“可见”绑定,它以某种方式工作,但可见绑定只是隐藏了 DOM 元素,它弄乱了可排序的 arrayIndex,向其中添加了不必要的元素。

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

“if”绑定会更好,因为它仅在必要时插入 DOM 元素,但我与 visible 一起使用的表达式总是被评估为 true,我不知道为什么......

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

这是小提琴:http: //jsfiddle.net/ingro/VaqqF/

任何帮助表示赞赏,谢谢!

4

1 回答 1

18

您只是误解了 if 绑定:它删除了已应用的节点的内容,而不是节点本身。如果你想删除一个节点而不在它周围创建一个包装器(你可以使用它来添加绑定),还有 if-binding 的注释版本,称为无容器控制流语法

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

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

参考: http: //knockoutjs.com/documentation/if-binding.html

于 2012-06-14T10:32:29.767 回答