剧本:

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

最佳答案

Angular中的服务是单例的,即每个注入器仅创建一次。

但是,angular.injector创建一个新的注射器功能。

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

例如:

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

10-07 13:26