【问题标题】:knockout-sortable 'dragged' callback not working淘汰赛可排序的“拖动”回调不起作用
【发布时间】:2015-10-28 16:41:27
【问题描述】:

我正在尝试从淘汰排序中调整示例小提琴,以便使用“拖动”回调而不是默认的“克隆”函数。

http://jsfiddle.net/mp2k170t/1/

我在根视图模型中添加了一个“makeNewTask”方法,如下所示:

self.makeNewTask = function(task, event, ui) {
    alert('make new task');
    return new Task(task.name() + " (created by makeNewTask)");
}

我正在尝试使用它来绑定它:

<div class="item" data-bind="draggable: { data: newTask, isEnabled: allowNewTask, dragged: $root.makeNewTask }">

但是,clone 方法仍在被调用。我做错了什么?

【问题讨论】:

    标签: javascript knockout.js knockout-sortable


    【解决方案1】:

    dragged 回调仅在sortable 绑定中可用。

    如果您将可排序绑定更改为

    &lt;div class="container" data-bind="sortable: {data: tasks, dragged: $root.makeNewTask}"&gt;

    和可拖动绑定为

    <div class="item" data-bind="draggable: { data: newTask, isEnabled: allowNewTask  }">
    

    应该可以。使用dragged 替代clone。因此,如果使用 dragged 选项,您可以考虑从原型中删除 clone 方法。

    Fiddle

    【讨论】:

    • 这很奇怪,因为在 'draggable' 的文档中它实际上是这样写的:“此外,拖动的回调可用于提供对象的副本,如上所述。”
    • 太好了,我明白了。我担心当对项目进行排序时,可排序的“拖动”事件也会触发。显然,它只有在将新东西拖入可排序时才会触发,这是有道理的。谢谢!
    猜你喜欢
    • 2014-04-24
    • 2015-03-14
    • 2013-02-21
    • 2014-05-10
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2012-11-14
    相关资源
    最近更新 更多