我有这样的数据服务:
this.myFunction= function(callback) {
var url = rootURL + "path1/path2/service.json";
var promise = $http.get(url);
promise.then(function(payload){
return callback(payload);
});
return promise;
}
Run Code Online (Sandbox Code Playgroud)
它在控制器中调用以初始化一些东西:
DataService.myFunction(function(data) {
if(data.statusText !== "OK"){
$scope.$worked= false;
}else{
$scope.$worked= true;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到"TypeError:无法读取属性",然后是"未定义".回调中的Console.log(数据)显示200"OK"响应和我期望的数据.我已经搜索过这个错误,主要是因为没有在服务中返回promise.但是,我正在回复诺言.在回调中的控制器范围上设置任何内容都会导致错误.
Angular版本:AngularJS v1.3.0-rc.2
谢谢!
Zac*_*yle 22
在这种情况下,您不需要返回承诺,因为您正在使用回调.回调和承诺是频谱的两端.你可以用这个完成你想要的任务.
如果要使用回调,可以保留控制器代码.
this.myFunction= function(callback) {
var url = rootURL + "path1/path2/service.json";
$http.get(url).then(function(response) {
callback(response.data);
});
}
Run Code Online (Sandbox Code Playgroud)
或者如果你想利用这些承诺
this.myFunction= function() {
var url = rootURL + "path1/path2/service.json";
return $http.get(url).then(function(response) {
return response.data;
});
}
DataService.myFunction().then(function(data) {
if(data.statusText !== "OK"){
$scope.$worked = false;
} else {
$scope.$worked = true;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56654 次 |
| 最近记录: |