我有一个这样的数据服务:
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; }
在控制器中调用它来初始化一些东西:
DataService.myFunction(function(data) { if(data.statusText !== "OK"){ $scope.$worked= false; }else{ $scope.$worked= true; } }
并且我得到“TypeError:无法读取属性’然后’undefined”.回调中的Console.log(数据)显示200“OK”响应和我期望的数据.我已经搜索了这个错误,主要是因为没有退回服务中的承诺.但是,我退回了承诺.在回调中设置控制器范围上的任何内容会导致错误.
Angular版本:AngularJS v1.3.0-rc.2
谢谢!
在这种情况下,您不需要返回承诺,因为您正在使用回调.回调和承诺是频谱的两端.你可以用这个完成你想要的.
如果要使用回调,可以留下您的控制器代码.
this.myFunction= function(callback) { var url = rootURL + "path1/path2/service.json"; $http.get(url).then(function(response) { callback(response.data); }); }
或者如果你想利用这些承诺
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; } });