加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 困惑的服务vs工厂

发布时间:2020-12-17 09:23:31 所属栏目:安全 来源:网络整理
导读:根据我的理解,当我在工厂里,我返回一个对象注入到控制器。当一个服务内,我使用这个对象处理对象,不返回任何东西。 我假设一个服务总是一个单例,一个新的工厂对象被注入每个控制器。然而,事实证明,一个工厂对象也是一个单例? 演示示例代码: var fact
根据我的理解,当我在工厂里,我返回一个对象注入到控制器。当一个服务内,我使用这个对象处理对象,不返回任何东西。

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

演示示例代码:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读