0

我正在尝试使用 Knockout 和 jQuery 设置拖放克隆,但我无法弄清楚这一点。
我有Niemeyer 写的可淘汰排序绑定,但我找不到一种方法来连接它。

我希望connectClass能够“捕捉”掉落并将它们传递到子元素 Sortable 中,但显然不是。这是我从 Niemeyer 派生的一个小提琴,它非常简单地显示了我正在尝试做的事情。

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

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

4

1 回答 1

1

一种选择是添加一个与and绑定droppable很好的绑定。有几种方法可以做到这一点,但这是一种将处理程序传递给 droppable 的方法,它调用将新项目作为第一个参数传递的处理程序。sortabledraggable

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/

于 2013-04-04T13:41:05.717 回答