Angularjs 角度JS(角度ui树)ng单击冲突与拖动开始事件

Angularjs 角度JS(角度ui树)ng单击冲突与拖动开始事件,angularjs,angular-ui-tree,Angularjs,Angular Ui Tree,我目前正在使用library,并尝试实现以下行为: 当用户仅单击“可拖动节点”时,会触发ng click功能,如果用户单击并开始拖动,则忽略ng click,并开始常规拖放 我有以下html结构: <div ui-tree="rootTree" ng-controller="Controller"> <div ui-tree-nodes="" ng-model="nodes"> <div ng-repeat="node in nodes" u

我目前正在使用library,并尝试实现以下行为:

当用户仅单击“可拖动节点”时,会触发ng click功能,如果用户单击并开始拖动,则忽略ng click,并开始常规拖放

我有以下html结构:

<div ui-tree="rootTree" ng-controller="Controller">
    <div ui-tree-nodes="" ng-model="nodes">
        <div ng-repeat="node in nodes" ui-tree-node="" ng-click="selectNode(node)" >
            <div ui-tree-handle="">
            ...
            </div>
        </div>
    </div>
</div>

我刚刚遇到了同样的问题,我通过将数据拖动延迟增加到100来解决它,请尝试:


ui-tree=“rootTree”ng controller=“controller”data drag delay=“100”

这是一个很老的问题,但如果您不想延迟,可以注册
drop()
回调,并在索引未更改的情况下执行单击操作。例如:

dropped: function(event){
    //if element was not moved, use click event
    if(event.source.index == event.dest.index){
        $scope.someAction();
    }
}

当您定义
ui树
时,您可以在这个选项对象中使用
ui树=“options”
这样的选项来定义它,您可以定义许多回调函数,比如
dropd
。看见
dropped: function(event){
    //if element was not moved, use click event
    if(event.source.index == event.dest.index){
        $scope.someAction();
    }
}