2010-05-05 101 views
3

我有以下武類:MooTools的類和JsDoc


Nem.Ui.Window = new Class({ 
    Implements: [Options, Events], 

    options: { 
     caption: "Ventana", 
     icon:  $empty, 
     centered: true, 
     id:   $empty, 
     width:  $empty, 
     height:  $empty, 
     modal:  false, 
     desktop: $empty, 
     x:   $empty, 
     y:   $empty, 
     layout:  $empty 
    }, 

    initialize: function(options) 
    { 
     this.setOptions(options); 
     /* ... */ 
    }, 

    setHtmlContents: function(content) 
    { 
     /* ... */ 
    }, 

    setText: function(text) 
    { 
     /* ... */ 
    }, 

    close: function(win) 
    { 
     /* ... */ 
    }, 

    /* ... */ 
}); 

我想JsDoc記錄下來。我讀了你可以使用@lends [class].prototype裏面new Class和標記initialize@constructs標記。我如何標記方法和事件?

I.E .: setHtmlContents應該是一個方法,close應該是一個事件。

此外,options下的元素可以記錄嗎?

回答

5

您可以使用@function@event事件標記方法,但由於默認情況下正確檢測到功能,因此您的情況下@function標記將不再需要。

options下的元素可以用@memberOf來記錄,在@memberOf Nem.Ui.Window#的示例中。它們將在生成的JSDoc中顯示爲options.optionName

類的完全記錄的版本會是這樣的

/** @class This class represents a closabe UI window with changeable content. */ 
Nem.Ui.Window = new Class(
/** @lends Nem.Ui.Window# */ 
{ 
    Implements: [Options, Events], 

    /** The options that can be set. */ 
    options: { 
     /** 
     * Some description for caption. 
     * @memberOf Nem.Ui.Window# 
     * @type String 
     */ 
     caption: "Ventana", 
     /** 
     * ... 
     */ 
     icon:  $empty, 
     centered: true, 
     id:   $empty, 
     width:  $empty, 
     height:  $empty, 
     modal:  false, 
     desktop: $empty, 
     x:   $empty, 
     y:   $empty, 
     layout:  $empty 
    }, 

    /** 
    * The constructor. Will be called automatically when a new instance of this class is created. 
    * 
    * @param {Object} options The options to set. 
    */ 
    initialize: function(options) 
    { 
     this.setOptions(options); 
     /* ... */ 
    }, 

    /** 
    * Sets the HTML content of the window. 
    * 
    * @param {String} content The content to set. 
    */ 
    setHtmlContents: function(content) 
    { 
     /* ... */ 
    }, 

    /** 
    * Sets the inner text of the window. 
    * 
    * @param {String} text The text to set. 
    */ 
    setText: function(text) 
    { 
     /* ... */ 
    }, 

    /** 
    * Fired when the window is closed. 
    * 
    * @event 
    * @param {Object} win The closed window. 
    */ 
    close: function(win) 
    { 
     /* ... */ 
    }, 

    /* ... */ 

}); 

我在initialize跳過@constructs,因爲它不會在文檔顯示在所有然後,我還沒有想出如何讓這個工作正常,但。

有關可用標籤及其功能的更多信息,請參閱jsdoc-toolkit的wiki上的TagReference

0

我終於通過使用自然文檔解決了這個問題。

+1

謝謝,謝謝,謝謝。 – awm 2011-09-07 00:47:54

+0

這根本不是對原始問題的回答。這是一個最好的解決方法。 – Bart 2012-03-01 13:19:28

+0

隨時作出回答,然後:) – 2012-03-02 11:35:14