0

为什么我的事件没有在foo冒泡时触发bar

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 小提琴:http: //jsfiddle.net/steaks/tJnLf/

4

1 回答 1

2

您必须从 发布myEventfoo设置emitFacadetruehttp://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");
    });
});
于 2013-08-08T05:01:25.003 回答