单个项目上的connectClass

时间:2018-07-09 15:08:08

标签: knockout.js knockout-sortable

我正在尝试设置淘汰赛,以限制可以拖动到哪些列表项。我一直在研究connectClass功能,但不确定它是否能满足我的需要。

我的应用程序具有一系列可排序的列表,用户从另一个“未分配的项目”列表(示例中的列表E)填充我的拖动项目列表。列表的数量会有所不同,但它们始终是两种不同类型之一。因此,为简单起见,我会说每种类型只有两种:

5个列表(从A到E)

  • 列表A:项目可以转到列表B或列表E
  • 列表B:项目可以转到列表A或列表E
  • 列表C:项目可以转到列表D或列表E
  • 列表D:项目可以转到列表C或列表E
  • 列表E:有些项目可以转到A或B,有些项目可以转到C或D

我认为我需要它来有效地在列表E(而不是整个列表)中的每个项目上指定'connectClass'值。有办法吗?

1 个答案:

答案 0 :(得分:0)

谢谢您的提示,发现您可以通过“ beforeMove”事件来做到这一点:

ko.bindingHandlers.sortable.beforeMove = function (args) {

    if (args.targetParent.ListE == false) //otherwise always ok
    {
        if (args.targetParent.Something != args.item.Something) { //this line evaluates if it is ok to drop the item
            args.cancelDrop = true; //if not, cancel the drop
        }
    }
};