Как задокументировать фабрику, которая возвращает класс в angular с помощью ngdoc?
Учитывая угловое приложение с фабрикой, которая возвращает класс, как таковой:
angular.module('fooApp').factory('User', function(){
function User(name){
this.name = name;
}
User.prototype.greet = function(){
return "Howdy, " + this.name;
}
return User;
});
С помощью ngdoc
(особый вкус jsdoc
использует), как мне документировать инициализатор, не определяя его как метод?
Сейчас я попробовал вот что:
/**
* @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
) обрабатываются как метод с именем Initializer
, что смущает людей, пытающихся использовать этот код.
Я пытался добавить @constructor
флаг, но это не влияет на HTML dgeni
заканчивает генерировать.
Спасибо.
ОБНОВЛЕНИЕ: Удалены ссылки на dgeni
, У меня сложилось впечатление, что используемый мной плагин ( grunt-ngdocs) использует dgeni
за кадром, но это не так.
3 ответа
Вот как бы я это сделал, не имея опыта работы с 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;
});
Это самоуверенный ответ.
У меня были проблемы с документацией Angular, и я даже написал блог об этом, Вздох, Документация AngularJS
Мой вывод заключался в создании нового. Angular-JSDOC является результатом.
Вот выдержки из github.
Радиально-JSDoc
Шаблон JSDoc 3 для AngularJS.
Плагин JSDoc и шаблон для AngularJS, больше ничего!
Характеристики
- TOC справа, оглавление, для навигации по директивам, сервисам, контролерам и т. Д.
- Читать и обрабатывать тег @ngdoc
Как это выглядит
Я создал запрос fork / pull для добавления поддержки @constructor в gulp-ngdocs, доступный в 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;
});