वास्तव में खेद है कि कोणीय है & विशिष्ट रेखांकित, हालांकि जिस तरह से मैं समस्या हल (एचटीएमएल 5 कल्पना, क्रोम पर काम करता है) का पालन करने के लिए आसान होना चाहिए पोस्ट करने के लिए।
.directive('documentDragAndDropTrigger', function(){
return{
controller: function($scope, $document){
$scope.drag_and_drop = {};
function set_document_drag_state(state){
$scope.$apply(function(){
if(state){
$document.context.body.classList.add("drag-over");
$scope.drag_and_drop.external_dragging = true;
}
else{
$document.context.body.classList.remove("drag-over");
$scope.drag_and_drop.external_dragging = false;
}
});
}
var drag_enters = [];
function reset_drag(){
drag_enters = [];
set_document_drag_state(false);
}
function drag_enters_push(event){
var element = event.target;
drag_enters.push(element);
set_document_drag_state(true);
}
function drag_leaves_push(event){
var element = event.target;
var position_in_drag_enter = _.find(drag_enters, _.partial(_.isEqual, element));
if(!_.isUndefined(position_in_drag_enter)){
drag_enters.splice(position_in_drag_enter,1);
}
if(_.isEmpty(drag_enters)){
set_document_drag_state(false);
}
}
$document.bind("dragenter",function(event){
console.log("enter", "doc","drag", event);
drag_enters_push(event);
});
$document.bind("dragleave",function(event){
console.log("leave", "doc", "drag", event);
drag_leaves_push(event);
console.log(drag_enters.length);
});
$document.bind("drop",function(event){
reset_drag();
console.log("drop","doc", "drag",event);
});
}
};
})
मैं तत्वों है कि एक खींचें घटना दर्ज ट्रिगर किया है प्रतिनिधित्व करने के लिए एक सूची का उपयोग करें। जब एक ड्रैग छोड़ने की घटना होती है तो मुझे मेल खाने वाली सूची में तत्व मिल जाता है जो मेल खाता है, इसे सूची से हटा दें, और यदि परिणामस्वरूप सूची खाली है तो मुझे पता है कि मैंने दस्तावेज़/विंडो के बाहर खींच लिया है।
मुझे ड्रॉप ईवेंट होने के बाद तत्वों पर खींचा गया सूची रीसेट करने की आवश्यकता है, या अगली बार जब मैं कुछ खींचने शुरू करता हूं तो सूची अंतिम ड्रैग और ड्रॉप एक्शन के तत्वों के साथ पॉप्युलेट हो जाएगी।
मैंने अभी तक क्रोम पर इसका परीक्षण किया है। मैंने इसे इसलिए बनाया क्योंकि फ़ायरफ़ॉक्स और क्रोम में एचटीएमएल 5 डीएनडी के विभिन्न एपीआई कार्यान्वयन हैं। (खींचें और छोड़ें)।
वास्तव में उम्मीद है कि इससे कुछ लोगों की मदद मिलती है।
नीचे दिए गए उत्तर के अलावा: मैंने देखा है कि कम से कम क्रोम के तहत घटनाओं के अनुक्रम है: ENTER ENTER अवकाश ENTER अवकाश ... अवकाश जिसका मतलब है कि अगर आप गणना प्रवेश और पत्तियों के आप प्रारंभिक प्रविष्टि और आंतरिक प्रवेश/छोड़ने के दृश्यों के बीच अंतर करने में सक्षम होंगे पीएस: फेड अप स्वरूपण के लिए खेद है ... –
आप आदमी @ मार्टिन वावरशच हैं! इस – aceofspades