与可排序容器分开拖放目标

时间:2013-04-04 05:47:17

标签: knockout.js jquery-ui-draggable knockout-sortable

我正在尝试使用Knockout和jQuery设置拖放克隆,但我无法理解这一点。
我有the knockout-sortable binding that Niemeyer wrote,但我找不到办法把它连接起来。

我希望connectClass能够“捕获”掉落并将它们传递给子元素Sortable,但显然不是。这是我从Niemeyer分得的小提琴,它简单地展示了我正在尝试做的事情。

http://jsfiddle.net/Kal_Torak/g74xN/3/

我的可排序绑定元素并不总是包含其中的项目,因此列表本身将不可见,因此我需要能够删除父容器上的任何位置并按照您的预期添加它们

1 个答案:

答案 0 :(得分:1)

一个选项是添加一个与droppablesortable绑定配合良好的draggable绑定。有几种方法可以做到,但是这里有一种方法可以将处理程序传递给droppable,它会调用处理程序将新项目作为第一个参数传递。

ko.bindingHandlers.droppable = {
    init: function(element, valueAccessor) {
        var dropHandler = valueAccessor() || {};

        $(element).droppable({
            drop: function(event, ui) {
               var item = ko.utils.domData.get(ui.draggable[0], "ko_dragItem");

                if (item) {
                    item = item.clone ? item.clone() : item;
                    dropHandler.call(this, item, event, ui);
                }
            }
        });
    }
};

然后,你会绑定它:

<div id="main" data-bind="droppable: addTask">

addTask推送到您的observbaleArray。

此处示例:http://jsfiddle.net/rniemeyer/3JBnh/