@accessor

nene edited this page Aug 9, 2012 · 3 revisions

(Updated for JSDuck 4)

Synopsis:

@accessor

Generates documentation for getters and setters of a config option.

Ext4 generates get/set accessor methods for the configs defined inside config: {} block. JSDuck 4 recognizes this automatically, so most of the time you don't need to add this tag:

Ext.define("MyClass", {
    config: {
        /**
         * @cfg {Ext.data.Store} store (required)
         * The store to use for this view.
         */
        store: undefined
    }
});

JSDuck will then generate documentation for the getters and setters as if you had documented the following methods:

/**
 * @method setStore
 * Sets the value of {@link #store}.
 * @param {Ext.data.Store} store
 */
/**
 * @method getStore
 * Returns the value of {@link #store}.
 * @return {Ext.data.Store}
 */

With JSDuck 3 you needed to add @accessor to all configs inside config: {}. But there are cases where even JSDuck 4 can't auto-detect and you need to use @accessor manually:

Ext.define("MyClass", function() {
    return {
        config: {
            /**
             * @cfg {Ext.data.Store} store (required)
             * The store to use for this view.
             * @accessor
             */
            store: undefined
        }
    };
});

Additionally the config options may be defined inside eventedConfig: block. Again, JSDuck 4 auto-detects this in the common case:

Ext.define("MyClass", {
    eventedConfig: {
        /**
         * @cfg {Ext.data.Store} store (required)
         * The store to use for this view.
         */
        store: undefined
    }
});

This will result in documentation for event <cfg-name>change to be created. In the above case it's as if you had also documented the following event:

/**
 * @event storechange
 * Fires when the {@link #store} configuration is changed by {@link #setStore}.
 * @param {MyClass} this The MyClass instance.
 * @param {Ext.data.Store} value The new value being set.
 * @param {Ext.data.Store} oldValue The existing value.
 */

In JSDuck 3 and when JSDuck 4 auto-detection doesn't work such case you also need to document that explicitly using both @accessor and @evented tag: