Javascript 如何编写angularJs控制器从Parse.com获取Rest数据

Javascript 如何编写angularJs控制器从Parse.com获取Rest数据,javascript,rest,angularjs,Javascript,Rest,Angularjs,参见下面的解决方案: 我正在尝试连接到Parse.com Rest后端并显示来自对象值的数据 HTML(我放置了几个角度调用以确保捕获输出): 这不起作用,严格来说,它什么都不做,甚至在控制台中也没有消息。 我知道rest调用获得了正确的凭据,因为当我使用rest tester程序测试它时,我能够获得返回的对象内容。也许URL不应该是绝对的? 任何线索都很受欢迎,我已经花了好几天的时间在这上面了 解决方案: 多亏了回答这个问题的人的帮助,我找到了这个问题的解决方案,所以我只想回馈: 从Parse

参见下面的解决方案:

我正在尝试连接到Parse.com Rest后端并显示来自对象值的数据

HTML(我放置了几个角度调用以确保捕获输出):

这不起作用,严格来说,它什么都不做,甚至在控制台中也没有消息。 我知道rest调用获得了正确的凭据,因为当我使用rest tester程序测试它时,我能够获得返回的对象内容。也许URL不应该是绝对的? 任何线索都很受欢迎,我已经花了好几天的时间在这上面了

解决方案:

多亏了回答这个问题的人的帮助,我找到了这个问题的解决方案,所以我只想回馈:

从Parse.com后端获取Json对象数据,并向其传递身份验证参数:

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");
            });
    };
请注意,在标头键对象值周围必须有“”。在方法键和url键周围不需要这些“”

列出每个对象的所有“名字”的模板:

<div ng-controller="MyController" ng-init="getItems()">
     <ul>
        <li ng-repeat="item in items.results"> {{item.firstName}} </li>
    </ul>
</div>

  • {{item.firstName}
注意:“items.results中的项”。“results”是必需的,因为返回值是一个JSON对象,其中包含一个results字段,其中包含一个列出对象的JSON数组。这可以帮你省去一些头痛。 还请注意“ng init”:如果不将其放入,或任何其他形式的对getItem()的调用,则不会发生任何事情,并且不会返回任何错误


这是我第一次尝试Angularjs,我已经爱上了^^。

根据您的要求,控制器应该:

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>

只需对Angular的较新版本进行一点更新(使用
。然后从1.5版开始使用
):


你试过什么吗?至少给我们看看你控制器中的一些代码。提示:您必须在控制器中插入“$http”服务。您应该能够从控制器中使用Parse Javascript SDK并使用数据更新$scope.items,您可能希望查看此链接,感谢链接,但我希望避免使用任何第三方SDK,然后你可以使用angularjs$http并重新发明轮子:)
$http({method:'GET',url:'https://api.parse.com/1/classes/Professionals,标题:{X-Parse-Application-Id:'xxx',X-Parse-REST-API-Key:'yyy'}})
谢谢,我不应该将函数命名为MyController而不是ParseCtrl吗?这是我在html中选择的控件的名称。@Benj是的,你可以命名函数
MyController
,我已经在答案中这样做了。谢谢,我编辑了上面的消息,因为它仍然无法工作。请注意,我必须将“”放在标题键和名称之间。这很奇怪,但在我使用的编辑器中会被标记为错误代码。@Benj,服务器的响应是什么?您是否使用firebug或Chrome开发者工具进行了检查?当您单击时,而不是之前,会执行$http请求。$http服务的响应是一个承诺,因此不能直接将其分配给变量。为了更好地连接angular和RESTful API,我总是使用ngResource。请告诉我如何修改答案来回答你的问题。
<div ng-controller="MyController" ng-init="getItems()">
     <ul>
        <li ng-repeat="item in items.results"> {{item.firstName}} </li>
    </ul>
</div>
<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>
  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");
            })
        }
    }
myApp.controller('MyController', function($scope, $http) {

  $scope.items = []

  $http({
     method: 'GET',
     url: 'https://api.parse.com/1/classes/Users',
     headers: {'X-Parse-Application-Id':'XXXXXXXXXXXXX', 'X-Parse-REST-API-Key':'YYYYYYYYYYYYY'}
  })
    .then(function successCallback(response) {
        alert("Succesfully connected to the API");
        $scope.items = data;
    }, function errorCallback(response) {
        alert("Error connecting to API");
    }); 

});