Knockout-Sortable:从排序列表中排除项目

时间:2013-12-27 18:47:15

标签: javascript knockout.js knockout-sortable

我正在使用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。我希望在“输入新任务”行下面不可能。

1 个答案:

答案 0 :(得分:2)

您可以使用jQuery UI的items option进行排序。

我们的想法是,您可以在实际想要排序的项目上放置一个类,然后使用items选项来选择它们。

这个类可以来自计算机。在您的情况下计算可能与列表中的最后一项有关。

绑定时,它看起来像:sortable: { data: items, options: { items: '.good-items' } }

以下是基本示例:http://jsfiddle.net/rniemeyer/mBjHN/