Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Как можно наследовать фабрику?

#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);

Комментариев нет:

Отправить комментарий