#javascript #angularjs
Есть такого вида фабрика, как ее можно наследовать? appServices.factory('Parent', ['$resource', '$rootScope', function ($resource, $rootScope) { var service = function () { this.items = []; } service.prototype.load = function (query) {} service.prototype.update = function (query) {} service.prototype.delete = function (query) {} return service; } ]);
Ответы
Ответ 1
Сервис и фабрика это разные понятия в мире Angular. Фабрику, которая у вас в примере, как раз таки можно пронаследовать, т.к. она возвращает непосредственно саму функцию конструктор, которой достаточно для наследования. Сервис же при инициализации создаст экземпляр родителя. .factory('ParentFactory', function () { var Parent = function () { this.items = []; } Parent.prototype.load = function (query) {} Parent.prototype.update = function (query) {} Parent.prototype.delete = function (query) {} return Parent; }) .factory('ChildFactory', function (ParentFactory) { var Child = function () { // инициализация родителя, если необходима ParentFactory.call(this); // свои свойства this.limit = 10; } // наследование Child.prototype = Object.create(ParentFactory.prototype); Child.prototype.constructor = Child; // свои методы Child.prototype.insert = function (query) {} return Child; }) Пример на PlunkerОтвет 2
Наследовать нельзя, можно декорировать. $provide.decorator(name, decorator);
Комментариев нет:
Отправить комментарий