2013-08-08 2 views
0

Почему мое событие не возбуждено в foo пузырьков до bar?Y.Node addTarget событие не пузырится

var foo = Y.one(".foo"), 
    bar = Y.one(".bar"); 

foo.addTarget(bar); 

foo.on("myEvent", function() { 
    //this log statement executes 
    Y.log("In foo listener"); 
}); 

bar.on("myEvent", function() { 
    //this log statement doesn't execute. 
    //I don't understand why. I think it 
    //should because I expect myEvent to 
    //bubble from foo to bar since I used 
    //addTarget 
    Y.log("In bar listener"); 
}); 

foo.fire("myEvent"); 

JS Fiddle: http://jsfiddle.net/steaks/tJnLf/

ответ

2

Вы должны опубликовать myEvent от foo и установить emitFacade в true. http://yuilibrary.com/yui/docs/event-custom/#facade

http://jsfiddle.net/tJnLf/27/

YUI().use('event-custom', 'node', function(Y) { 
    Y.on('domready',function(e) { 
     var foo = Y.one(".foo"), 
      bar = Y.one(".bar"); 

     foo.publish("myEvent", { 
      emitFacade: true 
     }); 

     foo.addTarget(bar); 

     foo.on("myEvent", function() { 
      Y.log("In foo listener"); 
     }); 

     bar.on("myEvent", function() { 
      Y.log("In bar listener"); 
     }); 

     foo.fire("myEvent"); 
    }); 
}); 
+0

Спасибо! Я как раз собирался написать этот ответ. –

Смежные вопросы