服务变量分配了数据,但在访问时始终未定义

Service variable assigned data but it is always undefined when accessed

本文关键字:访问 未定义 分配 变量 数据 服务      更新时间:2023-09-26

我仍然是角度的新手,如果我的问题有点......
我创建了一个调用一些 REST API 的服务,并用承诺实现了它。

我目前有这个承诺将数据返回给控制器并将其放入$scope

我希望当我在此函数中接收数据时,还将回收的数据存储到服务中
,这样如果我已经有数据,我就不必再次调用服务。

app.service("MyService", function ($http, $q) {
 this.OrignalDataFromService = null;
 return {
    var deferred = $q.defer();
    ...
    deferred.resolve(data);
    this.OrignalDataFromService = data;
    return deferred.promise;
  }
}

问题是,当我从控制器访问OrignalDataFromService时,它总是undefined(承诺我得到数据只是未定义的服务变量)为什么会这样?
我真的不明白模型应该驻留在角度应用程序中的什么位置。
控制器和服务中的变量$scope只是为了允许我们从某个地方获取数据,还是应该在服务内部(作为变量)进行模型?

OrignalDataFromService是服务的私有变量,所以如果你想访问它,你需要在对象中返回

检查这个

例:

 app.service("MyService", function ($http, $q) {
 this.OrignalDataFromService = null;
 return {
    originalData: this.OrignalDataFromService
  }
}

看看这里的小提琴手。您必须公开保存原始数据的变量。

服务

myApp.service('myService', function($q) {
  return {
    OrignalDataFromService: null,
    getData: function() {
      var deferred = $q.defer();
      var data = ["Data-1", "Data-2", "Data-3"]
      deferred.resolve(data);
      this.OrignalDataFromService = data;
      return deferred.promise;
    }
  }
});