Angular 1,无法显示记录

时间:2017-07-14 07:49:09

标签: javascript angularjs dependency-injection angularjs-scope angular-services

<html>

<head>

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
    <script type="text/javascript">         
     function fetchRecords($http){
        $http.get("http://jsonplaceholder.typicode.com/posts") 
        .then(function (response) {
            this.records = response.data})          
     }
     function recordsCtrl($scope, list){
                $scope.names = list.records 
        }
     var newApp = angular.module('newApp',[])
          newApp.service('list',fetchRecords)
         newApp.controller('recordsCtrl',recordsCtrl)           
         </script>
</head>
<body ng-app="newApp" >
    <div ng-controller="recordsCtrl">
        <table>
            <tr>
                <th>Number</th>
                 <th>id</th>
                  <th>Title</th>
                   <th>Body</th>
            </tr>
            <tr  ng-repeat='name in names' >
                <td>{{name.userId}}</td>
                <td >{{name.id}}</td>
                <td >{{name.title}}</td>
                <td >{{name.body}}</td>
            </tr>
        </table>
     </div>
</body>
</html>

无法显示回复的记录,如何在ANgular js中使用服务,请告诉我。 我试图将$ http保留在自定义服务中,并从那里我想将该响应传递给我的$ scope。 可以有人帮助我

1 个答案:

答案 0 :(得分:0)

问题是您要求承诺值,但是在确保检索到它之前分配此值。 您分配$scope.names = list.records,其中尚未分配list.records。当get请求收到响应时,将首先分配它。

因此最好将$http.get请求包装在函数ex中。返回承诺的function getData()。然后你可以在控制器中使用它:

list.getDate().then(data => {
  $scope.names = data;
})

您可以在此处详细了解Promises