2015-01-30 8 views
6

मेरे मार्कअप:आरएक्सजेएस: मैं event.preventDefault() एक ड्रॉप इवेंट कैसे कर सकता हूं?

<section id="drop-target"> 
    Drop file here... 
</section> 

मेरे कोड:

var dropTarget = document.getElementById('drop-target'); 

Rx.Observable.fromEvent(dropTarget, 'dragover').subscribe(function(event) { 
    event.preventDefault(); 
}); 

var dropStream = Rx.Observable.fromEvent(dropTarget, 'drop'); 

dropStream.subscribe(function(event) { 
    console.log('This will be called.'); 
    event.preventDefault(); 
}); 

dropStream.map(function(event) { 
    console.log('This will not be called.'); 
    return event.dataTransfer.files[0].path; 
}); 

कोई भी विचार कैसे मेरा आखिरी map कॉलबैक कहा जा सकता है? ब्राउज़र को फ़ाइल खोलने से रोकने के लिए मुझे एस drop और dragover दोनों की आवश्यकता है।

उत्तर

6

आपको बस अपने map स्ट्रीम की सदस्यता लेने की आवश्यकता है। सभी map एक नया अवलोकन योग्य बनाता है जो स्ट्रीम पर map ऑपरेशन चलाएगा। लेकिन आपको अभी भी कुछ करने के लिए सदस्यता लेने की आवश्यकता है:

dropStream 
    .map(function (event) { 
     console.log("hello"); 
     return event.dataTransfer.files[0].path; 
    }) 
    .subscribe(function (path) { 
     console.log("path=" + path); 
    }); 
+0

आप सही हैं, धन्यवाद! – Pipo

संबंधित मुद्दे