【问题标题】:How To Reference an Angular Services's Variable from a Promise then function inside the Service?如何从 Promise 引用 Angular 服务的变量,然后在服务中运行?
【发布时间】:2015-07-20 16:18:30
【问题描述】:

我正在尝试在 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"?

Plunker

【问题讨论】:

    标签: javascript angularjs angularjs-service


    【解决方案1】:

    您应该尝试将方法更新为:

    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; 
        })
      }
    

    【讨论】:

    • 成功了,谢谢 Nemanja!不过我很好奇,为什么在这种情况下我们需要通过 self 来引用它?你能不能只引用“this”一个函数级别的深度?
    • 你不必调用变量self,它可以是任何你想要的名字。该变量用于保存将在另一个范围中使用的当前范围(然后在您的情况下起作用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    相关资源
    最近更新 更多