Пользовательский объект события javascript? - PullRequest
1 голос
/ 14 февраля 2012

Разрабатывая в javascript, я потратил много времени, чтобы выяснить, какие аргументы передаются между функциями. Поэтому я попробовал новый метод сегодня. Я создал простой объект, затем определил имя события и аргументы.

var GreetingEvent = {
    HELLO: 'hello',
    'arguments': {
        name: null
    }
}

// dispatch
// pseudo code
this.fireEvent( new MyEvent(GreetingEvent.HELLO,"myname") );

// listening
// pseudo code
this.listenToEvent(GreetingEvent.HELLO, this.onGreetingEvent);

Я уверен, что другие уже сталкивались с моей ситуацией.

Какова была ваша ситуация и решение?

Обновление:

вот как я сейчас кодирую.

// dispatch
// pseudo code

    this.fireEvent('hello',{name:'myname'});

// listening
// pseudo code

    this.listenToEvent('hello', this.onGreetingEvent);

проблема этого кода в том, что мои коллеги должны открыть мой код, чтобы выяснить, какие аргументы передаются их слушателям, или они должны использовать console.log (). Это на самом деле хорошо. Я просто пытаюсь найти лучший способ.

1 Ответ

1 голос
/ 14 февраля 2012

Ext-JS делает это через аннотации JS-doc. Затем их события становятся частью их опубликованной документации. Вы можете не использовать их API и не получите красивую документацию, но вы все равно можете использовать их стиль документации, и пользователи вашего кода могут просто просмотреть документацию. http://docs.sencha.com/ext-js/4-0/#!/api/Ext.panel.Panel-event-resize

Вот пример из их кода объявления событий.

   me.addEvents(

        /**
         * @event beforeclose
         * Fires before the user closes the panel. Return false from any listener to stop the close event being
         * fired
         * @param {Ext.panel.Panel} panel The Panel object
         */
        'beforeclose',

        /**
         * @event beforeexpand
         * Fires before this panel is expanded. Return false to prevent the expand.
         * @param {Ext.panel.Panel} p The Panel being expanded.
         * @param {Boolean} animate True if the expand is animated, else false.
         */
        "beforeexpand",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...