1

我创建了两棵树,当我将一个节点从一棵树移动到另一棵树时,我想知道旧树和新树的名称。我添加data-tree-name="unsorted"了,ui-tree但我不知道如何访问它。这是我的代码:

        <div ui-tree="treeOptions" data-tree-name="unsorted">
            <ol ui-tree-nodes="" ng-model="skill.unsorted">
                <li ng-repeat="sk in skill.unsorted" ui-tree-node>
                    <div ui-tree-handle>
                        @{{ sk.name }}
                    </div>
                </li>
            </ol>
        </div>

         <div ui-tree="treeOptions" data-tree-name="sorted">
            <ol ui-tree-nodes="" ng-model="category">
                <li ng-repeat="cat in category" ui-tree-node>
                    <div ui-tree-handle>
                        @{{ cat.name }}
                    </div>
                    <ol ui-tree-nodes="" ng-model="cat.skills">
                        <li ng-repeat="sk in cat.skills" ui-tree-node>
                            <div ui-tree-handle>
                                @{{ sk.name }}
                            </div>
                        </li>
                    </ol>
                </li>
            </ol>
        </div>
----------------------------------------------------
$scope.treeOptions = {
        accept: function(sourceNodeScope, destNodesScope, destIndex) {
            return true;
        },
        dropped: function(e) {
            console.log (e.source.nodeScope);
        }
    };

那么我怎样才能获得data-tree-name价值。谢谢

4

1 回答 1

2

请参阅官方文档中删除事件的文档:

掉落(事件)

如果一个节点在删除后移动了它的位置,将调用 nodeDropped 回调。

参数:

  • event:事件参数,它是一个对象。

    • source:源对象

      • nodeScope:被拖动的源节点的范围。

      • nodesScope:源节点开始拖动时的父节点范围。

      • index: 开始拖动的位置。

      • cloneModel:给定data-clone-enabled为true,保存要插入的克隆节点的模型,可以在drop前编辑,不影响源节点。

    • dest: 目标对象

      • nodesScope:您刚刚放入的 ui-tree-nodes 的范围。

      • index: 你掉进去的位置。

    • elements: 拖动的相关元素。

      • placeholder:占位符元素。

      • dragging: 拖动元素。

    • pos:定位对象。

这是一个例子:

$scope.treeOptions = {
    dropped: function(event) {
        var sourceNode = event.source.nodeScope;
        var destNodes = event.dest.nodesScope;
        var sortBefore = event.source.index + 1;
        var sortAfter = event.dest.index + 1;
        var dataType = destNodes.$element.attr('data-type');

        // ...
    }
};
于 2016-02-04T10:56:58.027 回答