当我在加载页面后立即转到list.html时,它不会显示列表。我需要首先访问form.html,然后返回list.html然后它会给我列表。当我在控制器中有$ http功能时,它按照我的意愿工作,但现在他们在服务中,他们不像以前那样工作。
app.js
app.service("dataservice", function($http){
var list = [{}];
this.get = function(){
$http.get("harjoitus22/backend.php").success(function(response){
list = response;
});
};
this.save = function(newcontact){
$http({
method: 'post',
url: 'harjoitus22/backend.php',
data: newcontact,
header: 'Access-Control-Allow-Origin: *'
}).success(function(response){
list = response;
});
};
this.give = function(){
return list;
};
});
app.controller("mainController", function($scope, $location, dataservice){
$scope.save = function(){
dataservice.save($scope.newcontact);
$scope.newcontact = {};
$location.path("/list");
$scope.list = dataservice.give();
};
$scope.get = function(){
dataservice.get();
$scope.list = dataservice.give();
};
});
list.html
<tbody ng-init="get()">
<tr ng-repeat="object in list">
<td>{{object.nimi}}</td>
<td>{{object.email}}</td>
<td>{{object.ruoka}}</td>
<td>{{object.sauna}}</td>
</tr>
</tbody>
答案 0 :(得分:3)
$http
调用异步工作,当你调用它时,它不会在下一行执行时给你响应。要密切关注该ajax,您应该使用promise
方法返回$http
。
为了实现同样的目标,您需要从服务get
方法返回promise对象($http
方法确实返回了promise对象,这可以帮助您通过在{{1}中添加代码来执行代码} function's)。
<强>服务强>
.then
<强>控制器强>
this.get = function(){
return $http.get("harjoitus22/backend.php").then(function(res){
list = res.data;
});
};