Как документировать объекты, созданные фабричной функцией, используя ngdoc в угловых?
Как использовать ngdoc для документирования "угловой фабрики", которая возвращает "фабричную функцию"? В частности, как мне документировать объекты, которые создает моя "фабричная функция"?
В надуманном примере ниже я задокументировал, как использовать фабрику для создания объекта страницы, но как мне документировать, как использовать сами объекты страницы?
angular.module('fooRestClient').factory('page', function () {
var prototype = {};
// Below I need to somehow link the methods a page object has to the
// factory's documentation.
/**
* @description Fetches the page at the specified index.
*
* @param {number} index - the index of the page to fetch
*
* @returns {object} a page object representing the page at the given index
*/
prototype.getPage = function (index) {
// returns a new page.
};
// ... more useful methods.
/**
* @ngdoc service
* @type function
* @name fooRestClient:page
* @description
* A factory function for producing page objects....
*
* @param {Number} index - The page index.
* @param {Number} size - The page size.
* @param {Number} total - The total number of pages.
* @param {Array} data - The contents of the page.
* @returns {object} A page object for the given resource
*/
return function page(index, size, total, data) {
return Object.create(prototype, {
index: index,
size: size,
total: total,
data: data
});
};
});
Самое близкое совпадение, которое я могу найти в SO: Как задокументировать фабрику, которая возвращает класс в angular, с помощью ngdoc?, Это не помогает, потому что у меня нет имени класса, чтобы связать методы обратно, так как я не использую псевдоклассическое наследование.
1 ответ
Может быть, это работает, как вы ожидаете:
/**
* @ngdoc service
* @type function
* @name fooRestClient:page
* @description
* A factory function for producing page objects....
*
* @param {Number} index - The page index.
* @param {Number} size - The page size.
* @param {Number} total - The total number of pages.
* @param {Array} data - The contents of the page.
* @returns {object} A {@link prototypeInstance|page object} for the given resource
*/
return function page(index, size, total, data) {
/**
* @ngdoc object
* @name prototypeInstance
* @description page object for the given resource
*/
return Object.create(prototype, {
/*
* @ngdoc object
* @name prototypeInstance#index
* @description index description
*/
index: index,
/*
* @ngdoc object
* @name prototypeInstance#size
* @description size description
*/
size: size,
/*
* @ngdoc object
* @name prototypeInstance#total
* @description total description
*/
total: total,
/*
* @ngdoc object
* @name prototypeInstance#data
* @description data description
*/
data: data
});
};
Я знаю, это немного многословно, но это единственный способ, который я нашел, чтобы делать такие вещи