0

Я изменил свойство env моего url, чтобы проверить свой код локально. Кажется, что звонок с ошибкой даже не вызван. Мой код snippet-Обещание в Angular.js

 $scope.getfiles = function() { 
     Api.file.query().$promise.then(
     function(result){ $scope.getfiles = result; }, //on success 
     $scope.commonAjaxErrorHandling("Failed to get File data.",true) //on failure--> Always this line of code is executing.. 
      ); 
     }; 

Если я пытаюсь писать другую функцию ошибки. Его даже не называют.

 $scope.getfiles = function(){ 
     Api.flatFile.query().$promise.then(
     function(result){ $scope.File = result; 
    }, 
     function (result) { // this block is not getting called 
     if(result.status== 404){ 
     $scope.addErrorAlert("Service is down.Please try again later",true); 
     return; 
    } 
}); 
}; 

Может кто-нибудь помочь мне в этой ситуации?

 FileServices.factory('Api', ['$res', '$loc', 
     function($res, $loc){ 
     var contextPath = $loc.absUrl().split('/app/')[0]; 
     return { 
     flatFile: $res(contextPath+'/app/config/flatFile/data', {}, { 
     query: {method:'GET', isArray:true}, 
     save: {method:'POST'}, 
     }) 
     }; 
     }]); 
+0

Вы могли бы подтвердить, что функция вызывает вызов или не отлаживает ее через консоль разработчика.? есть ли какая-либо ошибка в консоли> –

+0

Угловая библиотека обещаний '$ q' –

+0

Что такое' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' –

ответ

1

Функция, вероятно, не вызвана в любом случае. Проблема здесь состоит в том, что в первом случае вы не определить функцию как обратный вызов, но немедленно вызвать саму

$scope.commonAjaxErrorHandling("Failed to get File data.",true) 

функции это не обратный вызов четкости, но непосредственный вызов $ scope.commonAjaxErrorHandling

Так что моя идея заключается в том, что никакой ошибки не происходит, и вот почему во втором случае ошибки функция не вызывается ни

0

Похоже, вы проверяете для status некорректно. Вы должны получить доступ к второму параметру fail обратного вызова:

// ... 
    , 
    function (jqXHR, textStatus, error) { 
    if(textStatus == 404){ 
     $scope.addErrorAlert("Service is down.Please try again later",true); 
     return; 
    } 
} 

Примечание:Там нет file ключа в объекте, который вы возвращающийся из Api службы, и поэтому он должен быть flatFile вместо.

Смежные вопросы