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 に答える