Javascript angular.injector(..).invoke在控制台中不返回单例
剧本:Javascript angular.injector(..).invoke在控制台中不返回单例,javascript,angularjs,coffeescript,singleton,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(f
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
为什么不返回相同的对象?
请检查Angular中的服务是单例的,因为每个喷油器只创建一次服务
angular.喷油器
创建一个新的喷油器功能
要获取当前应用程序注入器:angular.element(doElement.injector()
例如:
angular.element(document.querySelector('html')).injector().invoke(function(MyFactory) { console.log(MyFactory); })
Angular中的服务是单例的,因为每个注入器只创建一次服务
angular.喷油器
创建一个新的喷油器功能
要获取当前应用程序注入器:angular.element(doElement.injector()
例如:
angular.element(document.querySelector('html')).injector().invoke(function(MyFactory) { console.log(MyFactory); })
您确定
MainCtrl
已实际执行吗?因为你在那里写的东西看起来不会调用MainCtrl
,这意味着一切都正常运行。是的,MainCtrl被调用了,这就是为什么在plunkr中,它在输出中说Hello Waldo
,你确定MainCtrl
实际上已经执行了吗?因为你在那里写的东西看起来不会调用MainCtrl
,这意味着一切都正常运行。是的,MainCtrl被调用了,这就是为什么在plunkr中它在输出中说Hello Waldo
,请看一看angular doc,它说“以下总是成立的”。这是否与您所说的“angular.injector创建了一个新的喷油器”相矛盾?否。在示例中,angular.injector用于创建新的喷油器。然后,该注入器用于检索自身,它能够检索自身。请查看角度文档,其中显示“以下内容始终适用”。这是否与您所说的“angular.injector创建了一个新的喷油器”相矛盾?否。在示例中,angular.injector用于创建新的喷油器。然后,该注入器被用来恢复它自己,它能够恢复。