ExtJS добавляет пользовательское событие в тело - PullRequest
2 голосов
/ 15 января 2011

возможно ли прикрепить пользовательские события к телу документа? Я хочу реализовать простую шину сообщений. Я делал это много раз с jQuery, но не уверен, как это сделать в ExtJS.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 15 января 2011

Вам не нужно прикреплять событие к телу или любому элементу DOM, я бы предпочел прикрепить их к выделенному объекту.

Как:

MyApp.MessageBus = Ext.extend(Ext.util.Observable, {

  // I don't think it's necessary to declare all events
  events : {
    sayHello : true
  }


});

MsgBus = new MyApp.MessageBus();

И где-нибудьв вашем коде:

MsgBus.on('sayHello', function(who) { alert("Hello, " + who); });

и, в другом месте:

MsgBus.fireEvent('sayHello', 'innerJL');
1 голос
/ 16 января 2011

Поместить его в сам документ проблематично с точки зрения запуска пользовательских событий. Это можно сделать - вам просто нужно создать класс, который расширил бы Ext.util.Observable как ваше представление результата Ext.getDoc.

Но вы можете запутать события, добавив к наблюдаемым уже имеющимся у вас enableBubble : ['foo', 'bar']. Это означает, что вы делаете fireEvent('foo') для любого дочернего объекта Observable, и он поднимется до вершины, где находится ваш слушатель.

1 голос
/ 15 января 2011

Я согласен с Drasill, и в сообществе Ext есть много примеров создания простых реализаций шины на основе Observable.См. здесь и здесь для начала.

...