Угловая фабрика. как создать новые экземпляры фабрики?

Я пытаюсь создать новые экземпляры фабрики, но все время печатает последний экземпляр (из-за его синглтона). Как я могу получить новый экземпляр каждый раз, когда я создаю с new ключевое слово? Я создал пример того, что я пытаюсь достичь в jsfiddle.net Спасибо.

angular.module('mainModule', []);

  Crud.$inject = ['$http'];

    function Crud($http) {

        function CrudFactory(crudDTO) {
            var vm = CrudFactory;
                        vm.x = 1;
            vm.addX = addX;
            vm.getX = getX;
            vm.print = print;

            function addX(){
                vm.x +=1;
            }
            function getX(){

                return vm.x;
            }
            function print(){
                console.log(crudDTO.entity);
            }

            return vm;
        }

        return CrudFactory;
    }

    angular
        .module('mainModule')
        .factory('Crud', Crud);


    angular.module('mainModule').controller('mainCtrl', function($scope,Crud){
    var a = new Crud({entity:"test1"});
    var b = new Crud({entity:"test2"});
    //a.addX();
    //$scope.a =b.getX();
    a.print();
    b.print();
    a.print();
});

1 ответ

Решение

Вы ссылаетесь на это неправильно. Вы должны ссылаться на экземпляр вызываемой функции с помощью this а не с именем функции снова.

Вместо

var vm = CrudFactory;

менять

var vm = this;

Рабочая Демо:

http://jsfiddle.net/haqL7m5q/2/

Другие вопросы по тегам