我已经this fiddle创建了问题的功能示例。
我对module.factory与module.service的理解是,在调用工厂函数时,通过调用return new serviceFunction返回您提供的服务函数,并提供它的返回值。我认为这意味着你得到了不同的工厂结果实例。
我创建了这个工厂:
app.factory('fact', function() {
return Math.random();
});
然后注入工厂的两个控制器。然后我引用了工厂方法的结果:
app.controller('test1Controller', ['$scope', 'fact', function ($scope, fact) {
$scope.fact = fact;
}]);
app.controller('test2Controller', ['$scope', 'fact', function ($scope, fact) {
$scope.fact = fact;
}]);
我期望结果是两个不同的随机数,但它们是相同的。如果两次调用工厂方法,这怎么可能?
答案 0 :(得分:2)
你的假设是错误的。无论您选择何种方式来创建服务,它始终都是单身人士。 Angular只会调用您的服务构造函数,服务工厂或提供者函数,并重用已创建的对象。