自定义javascript事件对象?

时间:2012-02-14 04:30:22

标签: javascript events

在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 个答案:

答案 0 :(得分:1)

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",