jsDocToolkit方法、字段和属性don't在使用self-var时显示

jsDoc Toolkit methods, fields and properties don't show when I use a self var

本文关键字:self-var 显示 字段 方法 属性 don jsDocToolkit      更新时间:2023-09-26

工具包

我试图记录我的类,但我使用了一个"self"var来只公开公共方法。

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

这是我的一个班:

安建议我应该如何处理这件事?

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

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

编辑:

尝试:

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

它是一个简单的构造函数。用"this"代替"self"。

JsDoc了解"这个"的成员

如果你想使用"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

用"我"或其他词。