javascript - 服务变量分配数据但访问时始终未定义

标签 javascript angularjs

我对 Angular 还是个新手,如果我的问题有点……抱歉,我很抱歉
我创建了一个调用某些 REST API 的服务,并使用 promises 实现了它。

我目前正在使用这个 promise 将数据列表返回给 Controller 并将其放入 $scope 中。

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

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

问题在于,当我从 Controller 访问 OrignalDataFromService 时,它始终是 undefined( promise 我得到的数据只是未定义的服务变量),这是为什么呢?
我真的不明白模型应该驻留在 Angular 应用程序中的什么位置。
Controller 和服务中的 $scope 变量只是为了让我们从某个地方获取数据,还是模型应该在服务内部(作为变量)?

最佳答案

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

check this

例子:

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

关于javascript - 服务变量分配数据但访问时始终未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871396/

相关文章:

javascript - 我应该只在指令的链接 fn 中进行 DOM 操作吗?

angularjs - Angular Controller 符号有何不同?

angularjs - 如何在node.js "html page"中显示json stringify数组数据?

angularjs - 在 ngDialog 中将变量发送到 Controller ('resolve' )

javascript - 使用自定义协议(protocol)或 url 方案时,window.open() 方法会在 Google Chrome 中打开一个空白页面

javascript - 浏览器打开时加载

javascript - 在 npm 或 webpack 中分离开发和生产文件

javascript - 为什么两次 Object.create() 调用会导致合并?

javascript - 使用输入过滤字段并在angularJS中下拉

javascript - Angularjs $ 注入(inject)器 :unpr in the run method after minification