1

我正在尝试让 cancelDrop 选项与 Knockout 可排序绑定一起使用。现在,只是为了调试,我正在尝试取消所有动作。

这是我的标记

<ol class="toc-child" 
     data-bind="sortable: {template: 'listTemplate', data:children, isEnabled: $root.allowEditing, beforeMove: beforeMove }"></ol>

这是我的 beforeMove 功能

this.beforeMove = function(arg, b, c){
    //debugger;
    arg.cancelDrop = true;
};

当我取消注释调试器语句时,我可以看到函数命中,我可以看到 cancelDrop 属性被设置,我什至看到

if (arg.cancelDrop) {
    $(ui.sender).sortable('cancel');
    return;
}

按理执行。但动作仍然存在。

特别奇怪的是 beforeMove 函数似乎在被移动的项目被放置在新位置之后被调用。我应该期望在此之前看到这个被调用吗?

4

1 回答 1

1

看起来我有旧版本的绑定。线

$(ui.sender).sortable('cancel');

应该

$(arg.sourceParent === arg.targetParent ? this : ui.sender).sortable('cancel');

哪个修复它。

于 2012-05-02T00:51:26.027 回答