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>

базовый JSFiddle с возможностью сортировки. Я хочу, чтобы было невозможно опуститься ниже строки «Ввести новую задачу».


person Joel    schedule 27.12.2013    source источник
comment
Конечно, можно ... У вас есть пример кода?   -  person PW Kad    schedule 27.12.2013


Ответы (1)


Для этой цели вы можете использовать items параметр в интерфейсе jQuery для сортировки.

Идея состоит в том, чтобы поместить класс в элементы, которые вы действительно хотите сортировать, а затем использовать параметр items для их выбора.

Этот класс может быть из вычисляемого. Вычисленное в вашем случае потенциально может быть связано с последним элементом в списке.

При привязке это будет выглядеть так: sortable: { data: items, options: { items: '.good-items' } }

Вот базовый пример: http://jsfiddle.net/rniemeyer/mBjHN/

person RP Niemeyer    schedule 28.12.2013