【发布时间】:2016-05-27 04:00:26
【问题描述】:
所以我很困惑。在与此类似之前,我在控制器中使用了角度承诺:
thisCtrl.someFunction = function (data){
//...
}
ApiCall.get.something().then(function(data){
thisCtrl.newData = data;
thisCtrl.someFunction(thisCtrl.newData);
});
然后我就可以在整个控制器中使用 thisCtrl.newData(在 Promise 中创建)。我还能够使用在 promise 之外、在 promise 中定义的函数——如上面的例子所示。
由于某种原因,在尝试在服务中执行此操作时,我似乎无法使其工作。尝试使用与上述相同的模式:
this.someFunction = function (data){
//...
}
ApiCall.get.something().then(function(data){
this.newData = data; // Cannot read property of 'newData' of undefined
this.someFunction(thisCtrl.newData); //error: Cannot read property of 'someFunctions' of undefined
});
因此,一旦我在服务中执行相同的操作,这似乎超出了范围 - 使我在将数据传递给服务的其余部分或使用来自其余部分的任何数据时有点无助服务里面的承诺。我尝试将数据作为对象返回:
ApiCall.get.something().then(function(data){
return {
data: data
}
});
但它也返回了一个承诺,让我在同一条船上。我实际上已经尝试了很多东西,并且用谷歌搜索了很多东西。我希望它可以在服务中使用,以防止在多个控制器中重复大块代码。我不能在服务内部创建承诺吗?如果是这样,对于如何正确执行此操作的任何帮助表示赞赏....谢谢!
【问题讨论】: