Как написать контроллер angularJs для получения данных с Parse.com
См. решение ниже:
Я пытаюсь подключиться к серверу Parse.com Rest и отображать данные из значений объектов.
HTML (я поместил несколько вызовов angular, чтобы убедиться, что они выхватили выходные данные):
<div ng-controller="MyController">
<p>{{item}}<p>
<p>{{items}}<p>
<p>{{item.firstName}}<p>
<p>{{data}}<p>
</div>
JAVASCRIPT rest:
function MyController($scope, $http) {
$scope.items = [];
$scope.getItems = function() {
$http({method : 'GET',url : 'https://api.parse.com/1/classes/Professional/id', headers: { 'X-Parse-Application-Id':'XXXX', 'X-Parse-REST-API-Key':'YYYY'}})
.success(function(data, status) {
$scope.items = data;
})
.error(function(data, status) {
alert("Error");
});
};
}
Это не сработает, он ничего не делает, даже сообщение в консоли.
Я знаю, что остальные вызовы получили правильные учетные данные, так как я могу получить возвращаемое содержимое объекта, когда я тестирую его с помощью программы тестирования покоя. Может быть, URL-адрес не должен быть абсолютным?
Любая подсказка очень приветствуется, я потратил DAYS на это.
РЕШЕНИЕ:
Благодаря помощи людей, отвечающих на эту тему, мне удалось найти решение этой проблемы, поэтому я просто хотел внести свой вклад:
Получить данные объекта Json из бэкэнд Parse.com, передать им параметры аутентификации:
function MyController($scope, $http) {
$scope.items = [];
$scope.getItems = function() {
$http({method : 'GET',url : 'https://api.parse.com/1/classes/Professional', headers: { 'X-Parse-Application-Id':'XXX', 'X-Parse-REST-API-Key':'YYY'}})
.success(function(data, status) {
$scope.items = data;
})
.error(function(data, status) {
alert("Error");
});
};
Обратите внимание, что '' необходимые значения объекта заголовка arround. Эти "не нужны" рядом с ключами метода и URL.
Шаблон, который отображает все "firstName" каждого объекта:
<div ng-controller="MyController" ng-init="getItems()">
<ul>
<li ng-repeat="item in items.results"> {{item.firstName}} </li>
</ul>
</div>
Извещение: "item в items.results". "результаты" необходимы, потому что возвращаемое значение является объектом JSON, который содержит поле результатов с массивом JSON, в котором перечислены объекты. Это может спасти вам головную боль.
Также обратите внимание на "ng-init": если вы не поместите это или какую-либо другую форму вызова в getItem(), ничего не произойдет, и вам не будет возвращена никакая ошибка.
Это была моя первая попытка Angularjs, и я уже влюблен ^^.
Ответы
Ответ 1
На основании вашего запроса контроллер должен быть:
HTML
<div ng-controller="MyController">
<button type="button" ng-click="getItems()">Get Items</button>
<ul>
<li ng-repeat="item in items"> item.firstName </li>
</ul>
</div>
JS
function MyController($scope, $http) {
$scope.items = []
$scope.getItems = function() {
$http({method : 'GET',url : 'https://api.parse.com/1/classes/Users', headers: { 'X-Parse-Application-Id':'XXXXXXXXXXXXX', 'X-Parse-REST-API-Key':'YYYYYYYYYYYYY'}})
.success(function(data, status) {
$scope.items = data;
})
.error(function(data, status) {
alert("Error");
})
}
}