<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。 可以有人帮助我
答案 0 :(得分:0)
问题是您要求承诺值,但是在确保检索到它之前分配此值。
您分配$scope.names = list.records
,其中尚未分配list.records
。当get
请求收到响应时,将首先分配它。
因此最好将$http.get
请求包装在函数ex中。返回承诺的function getData()
。然后你可以在控制器中使用它:
list.getDate().then(data => {
$scope.names = data;
})
您可以在此处详细了解Promises