使用 JsDoc3 创建 AngularJS 文档时出现问题
Issues creating AngularJS documentation using JsDoc3
我有一个 AngularJS 工厂,我正在尝试生成使用 Jsdoc 的文档。逻辑如下:
(function (angular) {
/**
* @module factories
* @memberOf angular_module
*/
var factories = angular.module('factories');
/**
* @class BaseService
* @classdesc Base object
* @param {Object} $rootScope Root scope for the application.
*/
factories.factory('BaseService', ['$rootScope', function ($rootScope) {
var baseObject = (function () {
// Prototype
var basePrototype = {
_construct: function (args) {
},
publicMethod: function (args) {
}
};
// 'Private' methods
function initialise(args) {
}
function privateMethod(param) {
}
function setObjectProperties(o, properties) {
for (prop in properties) {
if (properties.hasOwnProperty(prop)) {
o[prop] = properties[prop];
}
}
}
//-----------------------------------------------
return {
create: function (args, properties) {
function obj() { }
obj.prototype = basePrototype;
var o = new obj();
setObjectProperties(o, properties);
// Call the base object 'constructor'
o._construct(args);
return o;
}
};
})();
return {
/**
* @function create
* @memberof! BaseService
* @description Creates a new object
*/
create: function (args, properties) {
return baseObject.create(args, properties);
}
};
}
]);
/**
* @class ChildService
* @classdesc Child object
* @extends BaseService
*/
factories.factory('ChildService', ['BaseService', function (BaseService) {
return BaseService.create({ 'someProperty': true }, {
/**
* @function childPublicMethod
* @description Child public method
*/
childPublicMethod: function () {
return this.publicMethod(123);
}
});
}]);
}(angular));
在另一个文件中我有:
/**
* @namespace angular_module
*/
我遇到的问题是我想为 BaseService.create 方法生成文档作为 BaseService 文档的一部分。同样,我想为 ChildService 部分中的 ChildService.childPublicMethod 函数生成文档。但是,目前没有为 BaseService.create 创建任何内容,并且 ChildService.childPublicMethod 的文档已添加到工厂模块中。我已经尝试使用@lends 和@alias,以及各种modules/class 名称的组合作为@memberof 行的一部分,但到目前为止没有任何东西给我想要的结果。非常感谢收到任何建议。
我想出的解决方案如下:
(function (angular) {
/**
* @namespace factories
* @memberof angular_module
*/
var factories = angular.module('factories');
/**
* @class BaseService
* @classdesc Base object
* @param {Object} $rootScope Root scope for the application.
* @memberof angular_module.factories
*/
factories.factory('BaseService', ['$rootScope', function ($rootScope) {
var baseObject = (function () {
// Prototype
var basePrototype = {
_construct: function (config) {
},
/**
* @function publicMethod
* @description Creates a new object
* @memberof angular_module.factories.BaseService
*/
publicMethod: function (args) {
}
};
// 'Private' methods
function initialise(args) {
}
function privateMethod(param) {
}
function setObjectProperties(o, properties) {
for (prop in properties) {
if (properties.hasOwnProperty(prop)) {
o[prop] = properties[prop];
}
}
}
//-----------------------------------------------
return {
create: function (args, properties) {
function obj() { }
obj.prototype = basePrototype;
var o = new obj();
setObjectProperties(o, properties);
// Call the base object 'constructor'
o._construct(args);
return o;
}
};
})();
return {
/**
* @function create
* @description Creates a new object
* @memberof angular_module.factories.BaseService
*/
create: function (args, properties) {
return baseObject.create(args, properties);
}
};
}
]);
/**
* @class ChildService
* @classdesc Child object
* @memberof angular_module.factories
* @extends angular_module.factories.BaseService
*/
factories.factory('ChildService', ['BaseService', function (BaseService) {
return BaseService.create({ 'someProperty': true }, {
/**
* @function childPublicMethod
* @description Child public method
* @memberof ChildService
*/
childPublicMethod: function () {
return this.publicMethod(123);
}
});
}]);
}(angular));
更改如下:
我用@namespace
替换了'factories'变量的@module声明
我在 class 声明中添加了@memberof angular_module.factories。
我在@extends 和@memberof 标签的值前添加了angular_module.factories。
真心希望这能帮到别人。
我有一个 AngularJS 工厂,我正在尝试生成使用 Jsdoc 的文档。逻辑如下:
(function (angular) {
/**
* @module factories
* @memberOf angular_module
*/
var factories = angular.module('factories');
/**
* @class BaseService
* @classdesc Base object
* @param {Object} $rootScope Root scope for the application.
*/
factories.factory('BaseService', ['$rootScope', function ($rootScope) {
var baseObject = (function () {
// Prototype
var basePrototype = {
_construct: function (args) {
},
publicMethod: function (args) {
}
};
// 'Private' methods
function initialise(args) {
}
function privateMethod(param) {
}
function setObjectProperties(o, properties) {
for (prop in properties) {
if (properties.hasOwnProperty(prop)) {
o[prop] = properties[prop];
}
}
}
//-----------------------------------------------
return {
create: function (args, properties) {
function obj() { }
obj.prototype = basePrototype;
var o = new obj();
setObjectProperties(o, properties);
// Call the base object 'constructor'
o._construct(args);
return o;
}
};
})();
return {
/**
* @function create
* @memberof! BaseService
* @description Creates a new object
*/
create: function (args, properties) {
return baseObject.create(args, properties);
}
};
}
]);
/**
* @class ChildService
* @classdesc Child object
* @extends BaseService
*/
factories.factory('ChildService', ['BaseService', function (BaseService) {
return BaseService.create({ 'someProperty': true }, {
/**
* @function childPublicMethod
* @description Child public method
*/
childPublicMethod: function () {
return this.publicMethod(123);
}
});
}]);
}(angular));
在另一个文件中我有:
/**
* @namespace angular_module
*/
我遇到的问题是我想为 BaseService.create 方法生成文档作为 BaseService 文档的一部分。同样,我想为 ChildService 部分中的 ChildService.childPublicMethod 函数生成文档。但是,目前没有为 BaseService.create 创建任何内容,并且 ChildService.childPublicMethod 的文档已添加到工厂模块中。我已经尝试使用@lends 和@alias,以及各种modules/class 名称的组合作为@memberof 行的一部分,但到目前为止没有任何东西给我想要的结果。非常感谢收到任何建议。
我想出的解决方案如下:
(function (angular) {
/**
* @namespace factories
* @memberof angular_module
*/
var factories = angular.module('factories');
/**
* @class BaseService
* @classdesc Base object
* @param {Object} $rootScope Root scope for the application.
* @memberof angular_module.factories
*/
factories.factory('BaseService', ['$rootScope', function ($rootScope) {
var baseObject = (function () {
// Prototype
var basePrototype = {
_construct: function (config) {
},
/**
* @function publicMethod
* @description Creates a new object
* @memberof angular_module.factories.BaseService
*/
publicMethod: function (args) {
}
};
// 'Private' methods
function initialise(args) {
}
function privateMethod(param) {
}
function setObjectProperties(o, properties) {
for (prop in properties) {
if (properties.hasOwnProperty(prop)) {
o[prop] = properties[prop];
}
}
}
//-----------------------------------------------
return {
create: function (args, properties) {
function obj() { }
obj.prototype = basePrototype;
var o = new obj();
setObjectProperties(o, properties);
// Call the base object 'constructor'
o._construct(args);
return o;
}
};
})();
return {
/**
* @function create
* @description Creates a new object
* @memberof angular_module.factories.BaseService
*/
create: function (args, properties) {
return baseObject.create(args, properties);
}
};
}
]);
/**
* @class ChildService
* @classdesc Child object
* @memberof angular_module.factories
* @extends angular_module.factories.BaseService
*/
factories.factory('ChildService', ['BaseService', function (BaseService) {
return BaseService.create({ 'someProperty': true }, {
/**
* @function childPublicMethod
* @description Child public method
* @memberof ChildService
*/
childPublicMethod: function () {
return this.publicMethod(123);
}
});
}]);
}(angular));
更改如下:
我用@namespace
替换了'factories'变量的@module声明
我在 class 声明中添加了@memberof angular_module.factories。
我在@extends 和@memberof 标签的值前添加了angular_module.factories。
真心希望这能帮到别人。