我目前正在使用角度 ui 树图书馆和我试图实现以下行为:
当用户单击“可拖动节点”时,它会触发 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>
当前的行为是“鼠标按下”时立即开始拖放,并且无法区分“单击”和尝试开始拖动
这是触发节点拖放的库代码uiTreeNode.js
var bindDrag = function() {
element.bind('touchstart mousedown', function (e) {
if (!scope.$treeScope.multiSelect) {
dragDelaying = true;
dragStarted = false;
dragTimer = $timeout(function() {
dragStartEvent(e);
dragDelaying = false;
}, scope.$treeScope.dragDelay);
} else {
toggleSelect(e);
}
});
element.bind('touchend touchcancel mouseup', function() {
$timeout.cancel(dragTimer);
});
};
我刚刚遇到了同样的问题,我通过将 data-drag-delay 增加到 100 来解决它,尝试:
ui-tree="rootTree" ng-controller="Controller" data-drag-delay="100"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)