当我使用self var时,jsDoc Toolkit方法,字段和属性不显示

时间:2011-11-03 15:39:17

标签: javascript jsdoc

工具包

我正在尝试记录我的类,但我使用“self”var来仅公开公共方法。

jsDoc可以找到类名,但找不到方法,字段,属性等...

这是我的一个课程:

Anny建议我该如何处理这个问题?

(function(App){
  /** @class The ViewModel for the EventView */
  App.ViewModels.EventsViewModel = function(service) {

    var self = {};

    /** Observable array containing events */
    self.events = new ko.observableArray();

    /** Call the fetchEvents method on the service */
    self.refreshEvents = function(e){
        $('.refreshBtn').changeIcon('refreshing');
        service.fetchEvents();
    }
    /** subscribe on the service->currentEvents var
      * on change update the events in this viewmodel
      * set the refesh butting is set to refresh (instead of refreashing) */
    service.currentEvents.subscribe(
        function(newValue){
            self.events(newValue);
            $('.refreshBtn').changeIcon('refresh');
        }
    );
    /** function for a timespan string ex: "10:00 - 14:00"
      * Date inputs should be of ISO-8601 Date format  */
    self.toTimeString= function(/* String */ start,/* String */ end)/* String */
    {
        var out = "";
        try
        {
            out =(start!=null && end!=null)? Util.IsoDateParse(start).format("HH:MM") + " - " + Util.IsoDateParse(end).format("HH:MM") : ""
        }
        catch(err)
        {
            out ="Error during toTimeString.\n\n";
            out+="Error description: " + err + "\n\n";
        }
        return out;
    }

    /** Call the fetchEvents method on the service */
    self.refreshEvents();

    return self;
  };
})(App)

ps:我正在使用Knockoutjs& jQueryMobile

修改

谢谢!差不多......我试着做这样的事情:

/** @memberOf App.ViewModels.EventsViewModel#
  * @field * @description Observable array containing events */
self.events = new ko.observableArray();

jsDoc显示它像“self.events”而不是“events”

2 个答案:

答案 0 :(得分:2)

使用memberOf标记(TagMemberOf)。由于App.ViewModels.EventsViewModel是在匿名函数中声明的,因此您可能需要使用name标记(TagName)将其作为全局范围。

编辑:

尝试:

/** @memberOf App.ViewModels.EventsViewModel#
  * @field
  * @description Observable array containing events
  * @name events
  */
self.events = new ko.observableArray();

答案 1 :(得分:0)

这是一个简单的构造函数。 使用'this'代替'self'。

JsDoc了解'this'的成员

如果您想使用除“this”之外的其他名称,则可以添加备用

var StackOverflow = function(){
  /** Alternative */
  var me = this;

  /**
  * Default rating
  * @type {number}
  */
  this.rating = 10;

  /** Load Happy New Year: increase rating */
  this.loadNewYear = function() {
    $.ajax().done(function(){
      me.rating = 100500;
    });
  };
};

PS:不要使用'self':https://stackoverflow.com/a/3216464/1197421

使用'我'或其他。