剧本:
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
!!
为什么不返回同一个对象?
答案 0 :(得分:4)
Angular中的服务是单例,因为每个注射器只创建一次。
然而, angular.injector
会创建一个新的注入器功能。
获取当前应用注入器:angular.element(domElement).injector()
对于你的例子:
angular.element(document.querySelector('html')).injector().invoke(function(MyFactory) { console.log(MyFactory); })