angularjs – 困惑的服务vs工厂

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

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

演示示例代码

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://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

原文链接:https://www.f2er.com/angularjs/147522.html

猜你在找的Angularjs相关文章