2011-07-31 22 views
6

Sadece Dojo ile çalışmaya başlayın. Bir olay işleyicisine birkaç özel parametre aktarmak istiyorum. jQuery olarak, bunu şöyle yapabilirsiniz:Dojo: Olay İşleyicisine Özel Parametreler Nasıl Geçirilir

$('#button').click({ 
    customData: 'foo' 
}, handlerFunction); 

Ve customData böyle handlerFunction ulaşılabilir:

function handlerFunction(event) { 
    console.log(event.data.customData); 
} 

Ben Dojo'nun yanına jQuery kod parçasını göç ediyorum. Bu parametreleri Dojo olay işleyicisine nasıl iletebilirim? dojoda bir etkinlik bağlarken Yani

function make_event_handler(customData){ 
    return function(evt){ 
     //customData can be used here 
     //just like any other normal variable 
     console.log(customData); 
    } 
} 

:

cevap

12

Eh, generaly kapanışları bir işleve "gizli" parametrelerini geçirmek için izin

dojo.connect(node, 'onclick', make_event_handler(17)); 

ben çok seviyorum başka olasılık sizin için kapaklar oluşturmak için dojo.partial/dojo.hitch kullanıyor. Bu tüm bunlar etkinlik işleyicileri gerektirdiğini

function event_handler(customData, evt){ 
    /// 
} 

dojo.connect(node, 'onclick', dojo.partial(event_handler, 17)) 

Not akılda ekstra parametre (ler) geçirerek ile oluşturulacak. JQuery kodunun daha doğrudan bir çevirisini yapıp yapamayacağınızı bilmiyorum, çünkü bu, evrendeki değişkenlere fazladan masaj yapmak gerektiriyor ve dojo'nun bunu yapmasını sanmıyorum. Ayrıca

+1

Aha, 'dojo.partial' aradığım şey. Teşekkürler! – Jonah

1

:

this.connect(other, "onClick", function(e) { 
    /* other is accesible here still */ 
}); 

ya:

this.connect(other, "onClick", dojo.hitch(this, "handler", other); 

ve olay işleyicisi:

this.handler = function(other, evt){...} 
İlgili konular