AngularJS:在服务的间隔函数中使用 "this"
AngularJS: Using "this" in an interval function within a service
当通过 $interval
调用时,如何让 "this" 关键字为 periodicFetch()
工作?
这是我的 angular 应用程序的代码:
angular.module('myapp', []);
var MyService = function($rootScope, $http, $interval) {
this.variables = {};
this.registerVariable = function(varName) {
this.variables[varName] = null;
};
this.periodicFetch = function() {
console.log(this.variables);
};
this.run = function() {
this.periodicFetch();
$interval(this.periodicFetch, 1000);
};
};
angular.module('myapp').service('myService',
['$rootScope', '$http', '$interval', MyService]);
angular.module('myapp').run(function(myService) {
myService.registerVariable('foo');
myService.run();
});
当前输出为:
Object {foo: null}
undefined
undefined
undefined
...
它似乎适用于没有 $interval
的第一次调用。但是在 $interval
内 this.variables
的值似乎是 undefined
。
当通过 $interval
调用时,如何让 "this" 关键字为 periodicFetch()
工作?
这是我的 angular 应用程序的代码:
angular.module('myapp', []);
var MyService = function($rootScope, $http, $interval) {
this.variables = {};
this.registerVariable = function(varName) {
this.variables[varName] = null;
};
this.periodicFetch = function() {
console.log(this.variables);
};
this.run = function() {
this.periodicFetch();
$interval(this.periodicFetch, 1000);
};
};
angular.module('myapp').service('myService',
['$rootScope', '$http', '$interval', MyService]);
angular.module('myapp').run(function(myService) {
myService.registerVariable('foo');
myService.run();
});
当前输出为:
Object {foo: null}
undefined
undefined
undefined
...
它似乎适用于没有 $interval
的第一次调用。但是在 $interval
内 this.variables
的值似乎是 undefined
。