0
AngularJSおよびJqueryUIで作業中に問題が発生しました。here is a demo。AngularJS with JqueryUI、dragoverおよびng-show問題
angular.module("app").directive("draggable", function($timeout) {
[...]
function link(scope, element, attrs) {
element.draggable({
start: function() {
$timeout(function() {
scope.setDisplay(true);
});
},
stop: function() {
$timeout(function() {
scope.setDisplay(false);
});
}
});
}
});
angular.module("app").directive("dragover", function($timeout) {
[...]
function link(scope, element, attrs) {
element.droppable({
over: function(event, ui) {
$timeout(scope.dragover);
}
});
}
});
<div ng-app="app" id="container" ng-controller="ctrl">
<div id="counter">{{overedCounter}}</div>
<div id="draggable" draggable></div>
<div id="droppable" ng-show="display" dragover="overed"></div>
</div>
問題は、ドラッグのみドラッグ中に表示されるドロップ可能上にあるときに「のdragover」イベントがトリガされないことです。イベントを発生させるには、スクロールバーを作成するためにウィンドウの外にドラッグしなければなりません。イベントが発生すると、イベントが発生します。
この問題は、JqueryUI(here)でdroppable要素が「可視」でないために発生しているため、イベントは発生しません。
新しい可視性を設定するために要素を「更新」する方法がわかっていますか? AngularJSプロジェクトで問題を開くべきでしょうか?
ありがとうございます!
良い回避策は、ありがとう!しかし、振る舞いは同じではありません。ここでドラッグ可能なものがクリックされたときに表示されます。 – Azca
私は、mousemoveを使用して動作をドラッグすることを検討するためにソリューションを更新しました。予想される動作につながるはずです。 –