angular.injector在每次调用时返回新的服务实例
angular.injector returns new instance of service on every call
我创建了一个简单的plunk来演示这个问题。
我需要从外面叫个服务。
当我使用时
angular.injector(['ng', 'MyModule']).get('MyService')
每次调用它时,我似乎都会得到一个新实例,或者至少表现为这样。在plunk中,注意"Increment"按钮是如何调用服务的同一实例的,而不是"Call Via Injector"的工作方式。
我已经敲了好几个小时的头,尝试了各种各样的东西,读了很多明显相关的帖子,但都无济于事。感谢您的帮助。
更改
angular.injector(['ng', 'MyModule']).get('MyService')
至
angular.element('[ng-app]').injector().get('MyService').inc();
第一个创建了一个新注入器的实例。angular中的每个注射器都有自己的服务和工厂实例。第二个获取注入器的现有实例。
此外,要使用angular.element选择DOM元素,需要包含jQuery。这是修改后的plunk。
这种行为的原因是,仅仅因为您将callViaInjector按钮放在了ng应用程序之外,就无法获得作用域的Injector实例。
尽管服务在角度上是单例的,但它们只是特定范围的单例。
请注意,如果您将callViaInjector放置在ng应用程序中,您将看到它的行为相应。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 角度服务未返回数据
- chrome.storage.sync.get未返回值-Angular服务
- 对象未从Ionic服务正确返回
- 为什么Angularjs服务返回的是字符数组而不是对象数组
- SailsJS:如何从服务返回值
- 我怎么能在Angular JS中等待,直到我的web服务返回
- 如何在公共js模块中从web服务返回数据
- 当视图在AngularJS中返回时,我如何获得异步服务调用来更新视图
- 承诺返回未定义的服务
- 从服务返回值时$scope控制器的变量是未定义的
- 从 Angular 模态服务中的模态主体模板返回数据
- 从角度服务返回空值的变量
- KendoDatePicker 无法识别从 Web 服务以 JSON 格式返回的日期
- 谷歌方向服务w/Waypoints返回ZERO_RESULTS
- 在Angular服务中使用$http时,为什么要返回promise和数据
- 返回JSONP的服务
- ajax调用wcf服务返回错误
- 从反复调用的承诺返回服务中获取最新数据
- 在AngularJs中返回服务的最好方式是什么?及其原因