angular.service()的单例和数据如何在控制器之间共享,即使它们在实例化时是新的

时间:2016-12-04 07:36:31

标签: javascript angularjs

请参阅下面的普通js代码。

var newable = function() {
    this.name = 'First';
  this.setName = function(name) {
    this.name = name;
  }
  this.getName = function() {
    return this.name;
  }
}

var n = new newable();
var m = new newable();

n.setName('second');
console.log(n.getName()); //second
console.log(m.getName()); //First

当使用' new'实例化角度服务时,如何将它们称为单例并且可以跨控制器共享数据?不是新的'误导在这里?

1 个答案:

答案 0 :(得分:0)

根据Angular's documentation

  

Angular服务是:

     
      
  • Lazily实例化 - Angular仅在应用程序组件依赖它时实例化服务。
  •   
  • 单身人士 - 依赖于服务的每个组件都会获得对服务工厂生成的单个实例的引用。
  •   

因此,当依赖于它的第一个应用程序组件被使用时,它们会获得 new' ,然后依赖于同一服务的每个其他组件都会获得对单一实例由服务工厂生成。