Tag: angularjs factory

AngularJS:什么是工厂?

我在Angular.js上做了很多工作,总的来说我觉得它是一个有趣而强大的框架。 我知道在服务与工厂vs.提供者与价值观之间已经有很多讨论,但是我仍然对Factory是什么感到困惑。 工厂已被定义在其他StackOverflow讨论如下: 工厂 语法: module.factory( 'factoryName', function ); 结果:当将factoryName声明为注入参数时,将提供通过调用传递给module.factory的函数引用返回的值。 我觉得这个解释很难把握,也不能增加我对工厂的理解。 有没有人有任何解释或真实生活的例子来分享一个Factory是什么,为什么你应该使用它来代替Service , Provider或其他? 更新 一个service 持有对任何对象 的引用 。 factory 是返回任何对象 的函数 provider 是一个返回任何函数的函数 – phew –

AngularJS:工厂和服务?

编辑2016年1月:由于这仍然得到关注。 既然问了这个问题,我已经完成了几个AngularJS项目,对于那些我主要使用factory ,build立了一个对象,最后返回了对象。 但是,下面的陈述仍然是正确的。 编辑:我想我终于明白了两者之间的主要区别,我有一个代码示例来演示。 我也认为这个问题是不同的build议重复。 重复说服务是不可实例化的,但是如果你按照我下面的演示来设置它,那实际上是这样的。 可以将服务设置为与工厂完全相同。 我还将提供代码,显示工厂故障转移服务,这似乎没有其他答案。 如果我像这样设置VaderService(即作为服务): var module = angular.module('MyApp.services', []); module.service('VaderService', function() { this.speak = function (name) { return 'Join the dark side ' + name; } }); 然后在我的控制器中,我可以这样做: module.controller('StarWarsController', function($scope, VaderService) { $scope.luke = VaderService.speak('luke'); }); 使用服务,注入到控制器的VaderService被实例化,所以我可以调用VaderService.speak,但是如果我将VaderService更改为module.factory, 控制器中的代码将不再工作 ,这是主要区别。 在工厂中,注入到控制器中的VaderService 没有被实例化,这就是为什么在build立一个工厂时需要返回一个对象(参见我的示例)。 但是,您可以使用与build立工厂完全相同的方式来设置服务(IE会返回一个对象), 并且服务的行为与工厂完全相同 有了这些信息,我没有理由使用工厂的服务,服务可以做一切工厂可以和更多。 下面的原始问题。 我知道这已经被问及时间的负载,但我真的不能看到工厂和服务之间的任何function差异。 我读过这个教程: http : […]

AngularJS:何时使用服务而不是工厂

请在这里忍受我。 我知道还有其他答案,如: AngularJS:服务vs提供者vs工厂 但是,我仍然不知道什么时候你会使用服务超过工厂。 从我可以告诉工厂通常用来创build可以被多个控制器调用的“通用”function: 创build通用控制器function Angular文档似乎更喜欢工厂而不是服务。 甚至在使用工厂时甚至提到“服务”,这更令人困惑! http://docs.angularjs.org/guide/dev_guide.services.creating_services 那么,什么时候会使用服务? 有没有什么东西只能通过服务完成或者更容易完成? 幕后有什么不同吗? 性能/内存差异? 这是一个例子。 除了声明的方法之外,它们看起来完全相同,我不知道为什么我会做一个。 http://jsfiddle.net/uEpkE/ 更新:从托马斯的答案似乎暗示服务是更简单的逻辑和工厂更复杂的逻辑与私人方法,所以我更新了下面的小提琴代码,似乎都能够支持私人function? myApp.factory('fooFactory', function() { var fooVar; var addHi = function(foo){ fooVar = 'Hi '+foo; } return { setFoobar: function(foo){ addHi(foo); }, getFoobar:function(){ return fooVar; } }; }); myApp.service('fooService', function() { var fooVar; var addHi = function(foo){ fooVar = 'Hi […]