-2
<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でのサービスの使い方は教えてください。 私はカスタムサービスで$ httpを維持しようとしています。そこから私の$ scopeにその応答を渡したいと思います。 いくつか助けてもらえますか角1、レコードを表示することができません

答えて

0

問題は、約束の値を求めているが、それが取り出されることを保証する前にこの値を割り当てることです。 $scope.names = list.recordsを割り当てます(list.recordsはまだ割り当てられていません)。 get要求が応答を受け取ると、最初に割り当てられます。

したがって、$http.get要求を関数exにラップする方が良いです。 function getData()は約束を返す。次に、コントローラでこのようにそれを使用することができます:

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

ここでは、Promises

についての詳細を読むことができます
関連する問題