如何从 Promise 引用 Angular 服务的变量然后在服务内部运行?
How To Reference an Angular Services's Variable from a Promise then function inside the Service?
我正在尝试在 Angular 服务中使用 $http
调用,其中使用 then 函数处理返回的承诺。在 then 函数中,我希望能够更新服务的一个变量,但是我似乎不知道该怎么做。正如您在下面的 Plunker 中看到的,当我尝试为 testVal
变量分配一个新值时,分配没有完成。我已经能够通过将承诺传回控制器然后在控制器自己的 then 函数中进行分配来在控制器中进行此分配,但我试图从服务本身弄清楚如何做到这一点,因为那是我的地方模型已存储,为了测试问题,我希望控制器尽可能简单。
console.log(response.data.foo); //Displays "bar"
testVal = response.data.foo; //Doesn't update this.testVal to "bar"?
您应该尝试将方法更新为:
this.testMethod = function(){
var self = this;
var promise = $http.get('http://echo.jsontest.com/foo/bar').then(function(response){
console.log(response.data.foo); //Displays "bar"
self.testVal = response.data.foo;
})
}
我正在尝试在 Angular 服务中使用 $http
调用,其中使用 then 函数处理返回的承诺。在 then 函数中,我希望能够更新服务的一个变量,但是我似乎不知道该怎么做。正如您在下面的 Plunker 中看到的,当我尝试为 testVal
变量分配一个新值时,分配没有完成。我已经能够通过将承诺传回控制器然后在控制器自己的 then 函数中进行分配来在控制器中进行此分配,但我试图从服务本身弄清楚如何做到这一点,因为那是我的地方模型已存储,为了测试问题,我希望控制器尽可能简单。
console.log(response.data.foo); //Displays "bar"
testVal = response.data.foo; //Doesn't update this.testVal to "bar"?
您应该尝试将方法更新为:
this.testMethod = function(){
var self = this;
var promise = $http.get('http://echo.jsontest.com/foo/bar').then(function(response){
console.log(response.data.foo); //Displays "bar"
self.testVal = response.data.foo;
})
}