为什么角度工厂没有返回不同的值?

时间:2014-12-15 20:57:53

标签: angularjs factory angularjs-factory

我已经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;
}]);

我期望结果是两个不同的随机数,但它们是相同的。如果两次调用工厂方法,这怎么可能?

1 个答案:

答案 0 :(得分:2)

你的假设是错误的。无论您选择何种方式来创建服务,它始终都是单身人士。 Angular只会调用您的服务构造函数,服务工厂或提供者函数,并重用已创建的对象。