在我的角度簡單的應用程序中,我遇到了回調函數中沒有完全可用的工廠問題。角度服務在回調函數中部分可用
Here is a plnckr帶有簡化版本的應用程序。
這裏是我的代碼:
控制器:
function activate() {
return featureService.getBoards().then(callBackOk, callBackError);
function callBackOk(data) {
vm.boards = data;
};
function callBackError(error) {
console.log(error);
};
};
featureService:
function getBoards() {
return connectionService.get(urls.featureUrl).then(callBack, callBackError);
function callBack(response) {
boards = {};
actuators = [];
response.data.forEach(function(feature){
formatFeature(feature);
storeFeature(feature);
});
return boards;
}
function callBackError(error) {
var deferred = $q.defer();
console.log(angular.toJson(loginService.issue));
console.log(angular.toJson(loginService.isOk));
console.log(angular.toJson(loginService.error));
console.log(angular.toJson(loginService));
loginService.issue("Unable to retrieve objects", error).then(function(){
deferred.resolve(getBoards());
}, function(error){
deferred.reject(error);
});
return deferred.promise;
}
}
控制檯日誌:
undefined features.services.js:71:1
undefined features.services.js:72:1
{"label":"","detail":{}} features.services.js:73:1
{"error":{"label":"","detail":{}},"graphicDefered":{}} features.services.js:74:1
Error: loginService.issue(...) is undefined
[email protected]://localhost:8100/app/features/features.services.js:76:17
最後,返回的對象來回米login服務:
return {
'login' : login,
'logout' : logout,
'isOk' : function(){return ok;},
'issue' : issue,
'error' : error,
'graphicDefered' : graphicDefered
};
我假定get
方法thows將由callBackError
函數被截獲一個例外。我懷疑延遲加載器,但我不知道如何解決它的想法...
我在這裏看到很少的angularjs代碼....你能發佈所有的代碼嗎?還有什麼connectionService? – Gianmarco
對不起,我不能發佈整個代碼... connectionService實際上只是$ http的包裝,我假設'get'會產生一個異常,被callBackError函數捕獲。我試圖在plnckr上創建相同的情況。 – Azca
我編輯了這個問題,你可以找到描述錯誤的plnckr。 – Azca