3

工具包

我正在尝试记录我的课程,但我使用“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”

4

2 回答 2

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();
于 2011-11-03T16:35:07.833 回答
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:不要使用“自我”:https ://stackoverflow.com/a/3216464/1197421

使用“我”或其他东西。

于 2013-12-10T06:21:23.283 回答