$rootScope.$on 在服务或工厂中
$rootScope.$on in a service or factory
我在服务或工厂中的$rootScope.$on
方法有一个奇怪的问题。
我有一项服务:
app.service('testService', function($rootScope){
this.var1 = 5;
this.change = function(n){
this.var1 = n;
}
$rootScope.$on('service', function(event, n){
//this.var1 = n;
console.log(this.var1);
});
});
问题是应该在控制台中打印5
。 但我无法访问$rootScope.$on
方法中的服务变量......
她是控制者:
app.controller( 'HelloCtrl', function($scope, testService, testFactory, $rootScope)
{
$scope.fromService = testService;
$rootScope.$broadcast("service", 12);
});
这就是JSFiddle:jsFiddle
怎么了?
我该怎么办?
您需要将this
存储在另一个变量中才能进行闭包。
内部回调this
是另一个...
希望对您有所帮助:
//angular.js example for factory vs service
var app = angular.module('myApp', []);
app.service('testService', function($rootScope){
var testService = this;
this.var1 = 5;
this.change = function(n){
this.var1 = n;
}
$rootScope.$on('service', function(event, n){
//this.var1 = n;
console.log(testService.var1);
});
});
app.controller( 'HelloCtrl', function($scope, testService, $rootScope)
{
$scope.fromService = testService;
$rootScope.$broadcast("service", 12);
});
http://jsfiddle.net/mc4ow2b6/4/
相关文章:
- $rootScope未使用forEach进行更新
- Angularjs工厂注入错误
- 如何将参数传递到angularJs中的工厂
- $rootScope not working
- 为什么只有工厂在棱角分明的网站上被提及
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- AngularJS:$q.dedefe()不能由工厂方法共享
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 无法在窗口内使用rootScope.通知
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何使用异步调用更改工厂的变量
- 将变量传递到工厂
- 注入工厂时,Angular停止工作
- $rootScope.$on 在服务或工厂中
- AngularJS工厂$rootScope$关于清理
- 当工厂可以做同样的事情时,为什么要使用$rootScope在控制器之间共享数据
- $rootScope和工厂方法
- 将$rootScope参数传递给工厂中的命名函数
- 在angularjs的rootScope中使用带有事件的工厂