나는 내가 쓴 수업에서 필사적으로 사건을 일으키려고 노력한다. YUI 위젯 내에서이 클래스를 사용하고 YUI 위젯이 해고 된 이벤트에 응답하기를 원합니다. 나는 이벤트 버블 링이 작동, 그래서 여기에이 코드는 절대적으로 잘 작동 방법을 알고 :위젯 내부의 클래스에서 버블 링 이벤트가 발생 했습니까?
YUI().use('event-custom', 'node', function (Y) {
function Publisher(bubbleTo) {
this.addTarget(bubbleTo);
this.publish("testEvent", {
emitFacade: true
});
this.fire("testEvent");
}
function BubbleTarget() {
this.on("testEvent", function (e) {Y.log("Bubbling in Test.js succeed!")});
var newPublisher = new Publisher(this);
}
// To fire events or be a bubble target, augment a class with EventTarget
Y.augment(Publisher, Y.EventTarget);
Y.augment(BubbleTarget, Y.EventTarget);
var bubbleTarget = new BubbleTarget();});
그러나, 나는 아주 열심히 실패 내 위젯에이 개념을 적용하려고한다.
YUI.add("SlideShow", function(Y) {
function SlideShow(config) {
SlideShow.superclass.constructor.apply(this, arguments);
}
SlideShow.NAME = "SlideShow";
Y.extend(SlideShow, Y.Widget, {
initializer: function() {
Y.log("Widget loaded!");
this.on("testEvent", function() {
Y.log("This should, but won't appear despite how hard I try!");
});
},
renderUI: function(){
var testSlide = new Slide("text", this);
}
});
Y.SlideShow = SlideShow;
function Slide(sendTo)
{
this.addTarget(sendTo);
this.publish("testEvent", {
defaultFn: function(){Y.log('Event published.')},
emitFacade: true
});
this.fire("testEvent");
}
Y.augment(Slide,Y.EventTarget, true, null, {emitFacade: true});
}, "0.0.1", {requires:["widget","event-custom","node","anim"]});
크롬에서 로그 출력은 다음과 같습니다 Test.js에서
- 버블 성공!
- 위젯로드!
- 이벤트가 게시되었습니다.
위젯에 대해 뭔가 중요한 것을 놓친 것처럼 보입니다. 이 주제를 더 잘 이해하기 위해 나를 도와주세요.
그래서 다른 위젯을 만들 것입니다. :/음, 내가 처리해야 겠어. – McWhite