8

给定一个带有返回类的工厂的 Angular 应用程序,如下所示:

angular.module('fooApp').factory('User', function(){
    function User(name){
        this.name = name;
    }

    User.prototype.greet = function(){
        return "Howdy, " + this.name;
    }

    return User;
});

使用ngdocjsdoc角度使用的特殊风格),我如何记录初始化程序而不将其定义为方法?

现在,这是我尝试过的:

/**
 * @ngdoc service
 * @name fooApp.User
 * @description User factory.
 */

angular.module('fooApp').factory('User', function(){

    /**
     * @ngdoc method
     * @methodOf fooApp.User
     * @name Initializer
     * @description Initializes a new User object with a name
     */
    function User(name){
        this.name = name;
    }

    User.prototype.greet = function(){
        return "Howdy, " + this.name;
    }

    return User;
});

但这会导致User初始化程序(User接受参数的函数name)被视为具有 name 的方法Initializer,这让尝试使用此代码的人感到困惑。

我试过添加@constructor标志,但这对 htmldgeni最终生成没有影响。

谢谢你。


更新:删除了对dgeni. 我的印象是我使用的插件(grunt-ngdocsdgeni在幕后使用,但事实并非如此。

4

3 回答 3

11

这就是我在没有任何 Angular 经验的情况下会做的事情:

/**
 * @ngdoc service
 * @name fooApp.User
 * @description User factory.
 */

angular.module('fooApp').factory('User', function(){

    /**
     * @ngdoc method
     * @constructs fooApp.User
     * @description Initializes a new User object with a name
     */
    function User(name){
        this.name = name;
    }

    User.prototype.greet = function(){
        return "Howdy, " + this.name;
    }

    return User;
});
于 2015-04-08T11:55:24.400 回答
2

这是自以为是的答案。
我在使用 Angular 文档时遇到了麻烦,我什至写了一篇关于它的博客,Sigh,AngularJS 文档

我的结论是建立一个新的。Angular-jsdoc就是结果。

这是来自github的摘录。

Angular-JSDoc

AngularJS 的 JSDoc 3 模板。
AngularJS 的 JSDoc 插件和模板,仅此而已!

特征

  • 右侧目录,目录,用于按指令、服务、控制器等导航
  • 读取和处理@ngdoc 标签

它看起来怎样

于 2015-04-12T03:58:51.123 回答
1

我创建了一个 fork/pull 请求,以向 gulp-ngdocs 添加@constructor 支持,如 grunt-ngdocs 中所示:https ://github.com/nikhilmodak/gulp-ngdocs/pull/91 。所有这一切都是更改基本用法部分以包含新关键字。

然后以与@SGD 的答案类似但略有不同的方式使用。确保服务上的 @ngdoc 指令指定功能。

例子:

/**
 * @ngdoc function
 * @name yourModule.yourService
 * @description
 *
 * Your short description
 *
 * @constructor
 * @param {string} yourConstructorParameter A string paramter
 * @returns {Object} An object instance of type YourClassName
 * 
 */       

angular
  .module('yourModule', [])
  .factory('YourClassName', function() {

    /**
     * @ngdoc object
     * @name yourModule.type:YourClassname
     * @description
     *
     * Short description.
     * 
     */

    function YourClassName(yourConstructorParameter) {
      this.yourConstructorParameter = yourConstructorParameter;
      this.yourMethod = function() {};
    }


  /**
   * @ngdoc function
   * @name yourModule.type:YourClassName#yourPrototypeMethod
   * @methodOf yourModule.type:YourClassName
   * @description
   *
   * Short Description.
   *    
   * @returns {Object} The object passed on instantiation.
   */

    YourClassName.prototype.yourPrototypeMethod = function() {
      return this.yourConstructorParameter;
    };

    return YourClassName;

  });
于 2016-03-25T14:35:40.383 回答