javascript - Angular 工厂。如何创建工厂的新实例?

标签 javascript angularjs angular-factory

我正在尝试创建工厂的新实例,但它始终打印最后一个实例(因为它是单例)。 每次用new关键字创建时如何实现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();
});

最佳答案

您错误地引用了它。您必须使用 this 而不是再次使用函数名称来引用被调用函数的实例。

代替

var vm = CrudFactory;

改变

var vm = this;

工作演示:

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

关于javascript - Angular 工厂。如何创建工厂的新实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45482947/

相关文章:

javascript - Angularjs 指令 : child nodes

javascript - 如何在 Google 跟踪代码管理器中将数据层变量从数字转换为字符串

javascript - D3 使用 for 循环链接动画

javascript - 无法在 AngularJs 模板中操作 DOM

javascript - 从 dom 中删除指令后使用 $scope.$destroy()

angularjs - Angular-ui-router state.transitionTo 路由到一个空的 :id (/users//)

javascript - 我什么时候应该以 Angular 创建工厂或虚拟机

Angular:收集的元数据包含将在运行时报告的错误:不支持 Lambda

javascript - 如何将 jquery 插件附加到动态创建的文本框