Я новичок в AngularJS, и я только начинаю понимать понятия и различия factory
, service
и controller
. Насколько я понимаю, a factory
используется для возврата объекта значения, который может быть введен. Большинство примеров, которые я видел, делают примерно так:
angular.module('module.factories', function() {
factory('FactoryObject', function() {
return {
someFunction: function(someParam) {};
someOtherFunction: function(someOtherParam) {});
};
});
});
В моем controller
, я хочу иметь возможность использовать этот объект, но я хотел бы инициализировать/инстанцировать его в контроллере, поскольку он может быть повторно инициализирован в зависимости от событий/действий в контроллере. Поэтому мне было интересно, могу ли я вместо этого вернуть конструкторную функцию в factory?
angular.module('module.factories', function() {
factory('FactoryObject', function() {
function FactoryObject(initParam) {
}
FactoryObject.prototype.someFunction = function() {};
return FactoryObject;
});
});
Является ли это подходящим шаблоном для angular factory? Или это просто "overkill" для использования factory для пользовательского объекта, подобного этому? Должен ли я просто включить его в файл js библиотеки и вместо этого ссылаться на него? Одно из преимуществ его размещения в factory заключается в том, что будет легко издеваться над ним в тесте, поскольку оно будет введено там, где оно используется. Существуют ли какие-либо другие механизмы в angular, которые могут быть использованы вместо этого?