angularjs – 困惑的服务vs工厂

前端之家收集整理的这篇文章主要介绍了angularjs – 困惑的服务vs工厂前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
根据我的理解,当我在工厂里,我返回一个对象注入到控制器。当一个服务内,我使用这个对象处理对象,不返回任何东西。

我假设一个服务总是一个单例,一个新的工厂对象被注入每个控制器。然而,事实证明,一个工厂对象也是一个单例?

演示示例代码

  1. var factories = angular.module('app.factories',[]);
  2. var app = angular.module('app',['ngResource','app.factories']);
  3.  
  4. factories.factory('User',function () {
  5. return {
  6. first: 'John',last: 'Doe'
  7. };
  8. });
  9.  
  10. app.controller('ACtrl',function($scope,User) {
  11. $scope.user = User;
  12. });
  13.  
  14. app.controller('BCtrl',User) {
  15. $scope.user = User;
  16. });

当更改user.first在ACtrl,结果是user.first在BCtrl也改变,例如。用户是单身人士?

我的假设是一个新的实例注入一个控制器与工厂?

所有角服务都是单例:

文档(请参阅服务为单身):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.

基本上服务和工厂之间的区别如下:

  1. app.service('myService',function() {
  2.  
  3. // service is just a constructor function
  4. // that will be called with 'new'
  5.  
  6. this.sayHello = function(name) {
  7. return "Hi " + name + "!";
  8. };
  9. });
  10.  
  11. app.factory('myFactory',function() {
  12.  
  13. // factory returns an object
  14. // you can run some code before
  15.  
  16. return {
  17. sayHello : function(name) {
  18. return "Hi " + name + "!";
  19. }
  20. }
  21. });

查看关于$ provide:http://slides.wesalvaro.com/20121113/#/的演示文稿

这些幻灯片被用在一个AngularJs联谊会:http://blog.angularjs.org/2012/11/more-angularjs-meetup-videos.html

猜你在找的Angularjs相关文章