作者:永久的花蕾 | 来源:互联网 | 2023-05-19 17:55
1> alex..:
我感觉到“闪烁”问题的根源是第二个指令的每个子元素都发生了dragenter
/ dragleave
事件am-dnd
。有一个堆栈溢出问题,讨论修复这个位置。
您可能可以这样声明CSS规则:
.child-elements {
pointer-events: none;
}
...并am-dnd
在事件触发期间使用jqLite 将此类应用于指令的所有子元素:
element.children().addClass("child-elements");
我做了一个JSFiddle,当将第一个指令拖到第二个指令上时,“闪烁”事件最小化,但是将第二个指令拖到第一个指令上仍然存在一些问题。不过,我希望这能为您指明正确的方向。
var app = angular.module('app', []);
app.directive('amDnd', function () {
return {
scope: true,
link: function (scope, element, attrs) {
element.attr('draggable', 'true');
element.on('dragenter', function () {
element.children().addClass("child-elements");
console.log('dragEnter');
});
element.on('dragleave', function () {
element.children().removeClass("child-elements");
console.log('dragleave');
});
}
};
});