angular 工厂。如何创建工厂的新实例?
angular factory. how to create new instances of the factory?
我正在尝试创建工厂的新实例,但它始终打印最后一个实例(因为它是单例)。
每次用new
关键字创建时如何实现new instance?
我创建了我想要在 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;
工作演示:
我正在尝试创建工厂的新实例,但它始终打印最后一个实例(因为它是单例)。
每次用new
关键字创建时如何实现new instance?
我创建了我想要在 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;
工作演示: