angular.injector(..)。在控制台中调用而不返回单例

时间:2014-04-09 17:00:34

标签: javascript angularjs coffeescript singleton

剧本:

app = angular.module('app', [])

app.factory 'MyFactory', ->
  val: 'Clark Kent'

app.controller 'MainCtrl', ($scope, MyFactory) ->
  MyFactory.val = 'Waldo'
  $scope.myFactory = MyFactory

把它放在控制台中:

angular.injector(['ng','app']).invoke(function(MyFactory) { console.log(MyFactory); })

...而不是Waldo,您得到Clark Kent !!

为什么不返回同一个对象?

查看the plunkr

1 个答案:

答案 0 :(得分:4)

Angular中的服务是单例,因为每个注射器只创建一次。

然而,

angular.injector会创建一个新的注入器功能。

获取当前应用注入器:angular.element(domElement).injector()

对于你的例子:

angular.element(document.querySelector('html')).injector().invoke(function(MyFactory) { console.log(MyFactory); })