gpt4 book ai didi

javascript - AngularJS:在服务的间隔函数中使用 "this"

转载 作者:搜寻专家 更新时间:2023-11-01 04:56:43 26 4
gpt4 key购买 nike

当通过 $interval 调用时,如何让 periodicFetch() 的“this”关键字起作用?

这是我的 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

最佳答案

尝试使用 .bind , 像这样

$interval(this.periodicFetch.bind(this), 1000);

Example

关于javascript - AngularJS:在服务的间隔函数中使用 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32515714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com