Angularjs $http.get не работает

Моя цель — использовать веб-службу REST в AngularJS, и прямо сейчас я делаю несколько пробных версий. Код ниже не работает и выдает следующее исключение. Можете ли вы помочь мне определить проблему?

Заранее спасибо.

function getUsersFromLocal($scope,$http)
{
 $http.get('http://localhost:8080/people').
 success(function(data) {
 $scope.data = data;
 });
return data;
}

Ошибка: TypeError: Невозможно прочитать свойство «get» неопределенного в getUsersFromLocal.

Сервис доступен, и я протестировал его через несколько клиентов REST.


person emredmrl    schedule 26.04.2015    source источник
comment
Является ли getUsersFromLocal() контроллером?   -  person Martin Shishkov    schedule 26.04.2015
comment
Вам нужно предоставить больше контекста. Где определяется getUsersFromLocal()? Конечная проблема заключается в том, что служба $injector Angular не знает, как выполнить внедрение зависимостей при вызове getUsersFromLocal() (где бы это ни было в вашем коде). Следуйте либо ответу @zegoline, либо ответу @pankajparkar, чтобы решить вашу проблему.   -  person Brian Clapper    schedule 26.04.2015


Ответы (3)


Если я правильно понял, функция getUsersFromLocal находится внутри контроллера, в основном параметры функции убивают существование объекта $scope, $http. Вам нужно удалить их из параметра, а также удалить оператор return, который был снаружи $http, который в любом случае не будет работать.

Код

app.controller('mainCtrl', function() {
    $scope.getUsersFromLocal = function() {
        $http.get('http://localhost:8080/people').
        success(function(data) {
            $scope.data = data;
        });
    };

    $scope.getUsersFromLocal(); //call ajax method
});
person Pankaj Parkar    schedule 26.04.2015
comment
Извините, я не знал, что могу выбрать только один правильный ответ. Я также отметил другие комментарии как хорошо. - person emredmrl; 05.05.2015
comment
@emredmrl нет проблем, братан..Рад помочь тебе..Спасибо :) дай мне знать, если тебе нужна помощь :) - person Pankaj Parkar; 05.05.2015

Попробуйте так, как я нашел на w3school.

var app = angular.module('myApp4', []);
    app.controller('customersCtrl', function($scope, $http) {
        $http.get("http://www.w3schools.com/angular/customers.php")
                .success(function(response) {
                    $scope.data= response.records;
                });
    });
person sparsh610    schedule 26.04.2015

если getUsersFromLocal не является контроллером или службой, и вы вызываете эту функцию вручную, вы должны передать ей объекты $http и $scope, вот так

module.controller('TestController', function($scope, $http) {

  function getUsersFromLocal($scope,$http) {
    $http.get('http://localhost:8080/people').
      success(function(data) {
        $scope.data = data;
      });
  }

  getUsersFromLocal($scope, $http); // pass this services manually
});
person zegoline    schedule 26.04.2015