1

ノードをドロップした後にツリーをリロードしたい。問題は、ツリーで関数を呼び出す方法がわからないことです。

私はツリー、コンテナのID、ファンシーツリーを使ってみました..ファンシーツリーウィジェットをロードするソースは次のとおりです。

echo FancytreeWidget::widget([
'options' =>[
    'source' => $chapters,
    'extensions' => ['dnd'],
    'icons' => false,
    'activeVisible' => true,
    'dnd' => [
        'preventVoidMoves' => true,
        'preventRecursiveMoves' => true,
        'autoExpandMS' => 400,
        'dragStart' => new JsExpression('function(node, data) {
            startNode = node;
            return true;
        }'),
        'dragEnter' => new JsExpression('function(node, data) {
            return true;
        }'),
        'dragDrop' => new JsExpression('function(node, data) {
            dropNode = node;
            data.otherNode.moveTo(node, data.hitMode);
            updatePosition();
            node.render(force=true);
        }'),
    ],
],

]);

4

1 に答える 1

1

もう少し遊んだ後、次の解決策にたどり着きました:

ノードをドロップした後に関数に与えられるデータパラメーターを調べていました。そこで、reload() を呼び出せるツリーを見つけました。

'dragDrop' => new JsExpression('function(node, data) {
            data.otherNode.moveTo(node, data.hitMode);
            dropNode = node;
            updatePosition();
            data.tree.reload();
        }'),
于 2015-01-21T08:13:37.347 に答える