2016-08-28 3 views
1

Служба Angularjs, которая возвращает мои данные json из веб-службы, создает ошибку непредвиденного синтаксического ошибки, непредвиденного идентификатора в return statement.angularjs service unsaught синтаксическая ошибка неожиданный идентификатор

это мой angularjs Услуги-

 app.factory('GetProjectService', function ($http, $q) { 
            return { 
               getProject: function(str) { 
               $http({ 
        method: 'GET', 
        url: 'http://localhost:19342/api/Search/GetAllProjects', 
        headers: { 'Content-Type': 'application/json' } 
        }).then(function(response) { 
                        if (typeof response.data === 'object') { 
                            return response.data; 
                        } else { 
                            return $q.reject(response.data); 
                        } 
                    }, function(response) { 
                        return $q.reject(response.data); 
                    }); 
               } 
        }; 

    }); 

ответ

1

$ д не используется должным образом в вашем коде. Пожалуйста, обратитесь следующий фрагмент кода -

app.factory('GetProjectService', function ($http, $q) { 
     return { 
      getProject: function(str) { 
      var deferred = $q.defer(); 

      $http({ 
        method: 'GET', 
        url: 'http://localhost:19342/api/Search/GetAllProjects', 
       headers: { 'Content-Type': 'application/json' } 
        }).then(function(response) { 
         deferred.resolve(response.data); 
        }, function(response) { 
         deferred.reject(response.data); 
        }); 
      return deferred.promise; 
      } 
    }; 

}); 

Но когда вы $ HTTP, нет необходимости использовать $ Q $, как HTTP возвращает обещание OBJ. Вот еще один способ использования $ HTTP в сфере услуг -

app.factory('GetProjectService', function ($http, $q) { 
     return { 
      getProject: function(str) { 

      return $http({ 
        method: 'GET', 
        url: 'http://localhost:19342/api/Search/GetAllProjects', 
       headers: { 'Content-Type': 'application/json' } 
        }); 

      } 

    }; 

}); 
+0

'$ q.reject' является допустимым методом службы' $ q'. Он создает обещание, которое отклоняется с заданным значением. Для получения дополнительной информации см. [AngularJS $ Reference Reference - $ q.reject] (https://docs.angularjs.org/api/ng/service/$q#reject) – georgeawg

+0

Да, он возвращает обещание, но код был написанный таким образом, что функция getProject ничего не возвращает, мы должны возвратить обещание с помощью обоих способов, упомянутых выше. –

0

getProject пропускал return заявление.

app.factory('GetProjectService', function ($http, $q) { 
    return { 
     getProject: function getProject(str) { 
      //RETURN http promise 
      return $http({ 
       method: 'GET', 
       url: 'http://localhost:19342/api/Search/GetAllProjects', 
       headers: { 'Content-Type': 'application/json' } 
      }).then(function onSuccess(response) { 
       if (typeof response.data === 'object') { 
        return response.data; 
       } else { 
        return $q.reject(response.data); 
       } 
      }, function onReject(response) { 
       return $q.reject(response.data); 
      }); 

     } 
    }; 

}); 

Там должно быть return заявление на каждом уровне иерархии функций. Завод нуждается в заявке return, для функции getProject необходим оператор return, а функции onSuccess и onReject должны либо содержать return, либо throw.

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