我正在使用knockout-sortable对一个集合进行排序,我有一个“新”行,它应该始终保持为空并位于列表的底部。我可以通过检查beforeMove中的位置来“取消”此行之后的丢弃,但如果我可以阻止此行下方的区域首先显示为可放置的目标,那么会更好。
这可能吗?行本身 是我正在排序的集合中的一个真实元素,而是在容器中我与sortable:绑定,这些东西将非常难以变化
<div id="main">
<h3>Tasks</h3>
<div class="container" data-bind="sortable: tasks">
<div class="item">
<span data-bind="visible: !$root.isTaskSelected($data)">
<a href="#" data-bind="text: name, click: $root.selectedTask"></a>
</span>
<span data-bind="visibleAndSelect: $root.isTaskSelected($data)">
<input data-bind="value: name, event: { blur: $root.clearTask }" />
</span>
</div>
</div>
<a href="#" data-bind="click: addTask">Add Task</a>
</div>
A basic sortable JSFiddle。我希望在“输入新任务”行下面不可能。
答案 0 :(得分:2)
您可以使用jQuery UI的items
option进行排序。
我们的想法是,您可以在实际想要排序的项目上放置一个类,然后使用items
选项来选择它们。
这个类可以来自计算机。在您的情况下计算可能与列表中的最后一项有关。
绑定时,它看起来像:sortable: { data: items, options: { items: '.good-items' } }