gpt4 book ai didi

angularjs - 更新 Angular JS 服务中 $Promise 内的 'this' 上下文属性

转载 作者:行者123 更新时间:2023-12-03 20:38:20 25 4
gpt4 key购买 nike

我的服务中使用了一个函数,该函数定义为:

var getData = function() {
return anotherService.getData().$promise;
};

和一个 this我在整个服务中操纵的属性。
this.someProperty = 'a string';

我在服务的返回部分调用上述函数:
return{
updateProperty: function(){
getData().then(function(data){
this.someProperty = data;
});
}
}

在上面,我得到一个 this is undefined我的浏览器控制台中的相关错误。我认为这是因为已解决 $promise是 AJAX 调用和 this脱离上下文使用。操纵 this 的最佳方法是什么?在此实例中使用从 AJAX 调用返回的数据的属性?

最佳答案

如果您正在操纵 this在整个服务中,将它分配给一个变量,如 var self = this .问题是this是函数的上下文,可以使用 fn.call(context) 由其他代码更改或 fn.apply(context, args) .因此,在任何给定函数的范围内,它可能会有所不同。

所以只需将它分配给某个变量并使用它:

var self = this;

return {
updateProperty: function(){
getData().then(function(data){
self.someProperty = data;
});
}
};

关于angularjs - 更新 Angular JS 服务中 $Promise 内的 'this' 上下文属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24145178/

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