如果我的问题有点问题,我仍然很有兴趣,很抱歉...
我创建了一个调用一些REST API的服务,我用promises实现了它。
我目前正在将此承诺返回到控制器的数据列表并将其放入$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
变量是否允许我们从某处获取数据,或者模型应该在服务中(作为变量)?
答案 0 :(得分:3)
OrignalDataFromService 是服务的私有变量,因此如果您想要访问它,则需要在对象中返回
示例:
app.service("MyService", function ($http, $q) {
this.OrignalDataFromService = null;
return {
originalData: this.OrignalDataFromService
}
}
答案 1 :(得分:1)
看看小提琴手here。您必须公开保存原始数据的变量。
<强>服务强>
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;
}
}
});