根据我的理解,当我在工厂里,我返回一个对象注入到控制器。当一个服务内,我使用这个对象处理对象,不返回任何东西。
我假设一个服务总是一个单例,一个新的工厂对象被注入每个控制器。然而,事实证明,一个工厂对象也是一个单例?
演示示例代码:
var factories = angular.module('app.factories',[]); var app = angular.module('app',['ngResource','app.factories']); factories.factory('User',function () { return { first: 'John',last: 'Doe' }; }); app.controller('ACtrl',function($scope,User) { $scope.user = User; }); app.controller('BCtrl',User) { $scope.user = User; });
当更改user.first在ACtrl,结果是user.first在BCtrl也改变,例如。用户是单身人士?
我的假设是一个新的实例注入一个控制器与工厂?
所有角服务都是单例:
原文链接:https://www.f2er.com/angularjs/147522.html文档(请参阅服务为单身):https://docs.angularjs.org/guide/services
Lastly,it is important to realize that all Angular services are application singletons. This means that there is only one instance of a given service per injector.
基本上服务和工厂之间的区别如下:
app.service('myService',function() { // service is just a constructor function // that will be called with 'new' this.sayHello = function(name) { return "Hi " + name + "!"; }; }); app.factory('myFactory',function() { // factory returns an object // you can run some code before return { sayHello : function(name) { return "Hi " + name + "!"; } } });
查看关于$ provide:http://slides.wesalvaro.com/20121113/#/的演示文稿
这些幻灯片被用在一个AngularJs联谊会:http://blog.angularjs.org/2012/11/more-angularjs-meetup-videos.html