2014-10-16 1 views
0

Я пытаюсь получить документацию JS. Я использую Dojo и некоторые другие сложные рамки, созданные поверх него, я пощажу детали. Дело в том, что в этой структуре используются модули AMD. Я хочу, чтобы мой JSDoc работал.JSDoc3 с Dojo и AMD

Вот то, что я до сих пор:

/** 
* Creates a button instance that launches a document entry template selector 
* @module widgets/instance/AddButton 
*/ 
define([ 
    "dijit/_TemplatedMixin", 
    "dijit/_WidgetBase", 
    "dojo/_base/declare", 
    "dojo/_base/lang", 
    "dojo/on", 
    "kwcn/services/request", 
    "kwcn/widgets/AddContentDialog" 
], function (_TemplatedMixin, _WidgetBase, declare, lang, on, request, AddContentDialog) { 
    return declare('AddButton', [_WidgetBase, _TemplatedMixin], /** @lends module:widgets/instance/AddButton */{ 
     id: 'add-button', 
     contentList: null, 
     templateString: '<button class="btn btn-link toolbar-link"><i class="fa fa-lg fa-file"></i> Add Document</button>', 
     addContentItem: null, 
     type: null, 
     /** 
     * @constructs 
     * @param args 
     * @param args.type {string} The type of content item 
     * @param args.contentList {ContentList} The instance of [ContentList]{@link module:widgets/contentList/ContentList} in scope 
     */ 
     constructor: function (args) { 
      declare.safeMixin(this, args); 
     }, 
     /** 
     * @private 
     */ 
     postCreate: function() { 
      console.log("creating the add content button..."); 
      this.addContentItem = new AddContentDialog({ 
       repository: request.repository(), 
       hasCase: false 
      }); 
      this.own(on(this.domNode, 'click', lang.hitch(this, 'show'))); 
     }, 
     /** 
     * @public 
     */ 
     show: function() { 
      request.inboundFolder().then(lang.hitch(this, function (folder) { 
       this.addContentItem.showAddDocument(null, folder); 
      })); 
     } 
    }); 
}); 

Результат: enter image description here

Этот результат не плохо. Но это говорит о том, что мои участники статичны. Похоже, что WebStorm делает их корректными как члены, но генератор jsdoc3 этого не делает. Из того, что я читал, мне не нужно было указывать @memberof, поскольку @lends должен заботиться об этом. Есть ли что-то, что я делаю неправильно? Любая общая рекомендация будет оценена по достоинству. Я прочитал документацию JSDoc3, но многие конструкции кажутся размытыми при добавлении AMD в уравнение.

ответ

2

Вам нужно предоставить свойства экземпляра прототипу, а не самому объекту: @lends module:widgets/instance/AddButton#. Обратите внимание на # в конце, который является сокращением для .prototype.

Также обратите внимание, что jsdoc3 имеет довольно много ошибок, связанных с его обработкой модулей, не относящихся к CommonJS, поэтому вам может понадобиться сделать лишний хакерский материал, чтобы он работал правильно.

+0

Красивая! Это работало точно так же, как вы сказали. Теперь я чувствую, что вижу. –