2015-01-30 23 views
6

Benim işaretleme: RxJS: Bir drop olayı nasıl event.preventDefault() yapabilirim?

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

Kodum

: benim son map geri arama nasıl

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; 
}); 

Herhangi fikir denebilir? Tarayıcının dosyayı açmasını önlemek için drop ve dragover için preventDefault s'ye ihtiyacım var.

cevap

6

Sadece map akışınıza abone olmanız gerekiyor. Tüm map, akışta map işlemini çalıştıracak yeni bir gözlenebilir oluşturun. Ama yine de bir şeyler yapmak için abone olmanız gerekiyor:

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

Haklısınız, teşekkür ederim! – Pipo