我有一个service
来获取(使用数组)来自服务器的所有帖子。我需要通过id过滤此数组,并在一个页面中仅显示此帖子。
在服务中我有这段代码。
.service('PostAPI', function($http) {
this.getAll = function() {
return $http.get("ajax/getAllPosts.php");
}
this.getOne = function(data) {
return $http.get("ajax/searchPost.php?postID=" + data);
}
this.delete = function(data) {
if (confirm("Are you sure to delete this line?")) {
return $http.delete("ajax/deletePost.php?postID=" + data);
}
}
this.update = function(data) {
return $http.put("ajax/updatePost.php?postID" + data);
}
this.create = function() {
return $http.post("ajax/addPost.php");
}
})
在控制器中
.controller("PostControlador", function($scope, $routeParams, PostAPI) {
GetPost();
$scope.title = "Editar post";
function GetPost() {
PostAPI.getOne($routeParams.id).success(function(data) {
$scope.post = data;
console.log($scope.post);
});
};
在后期HTML中我有这个。
<div>
<div>{{post.TASK}}</div>
<div>{{post.STATUS}}</div>
<a href="#/posts/"><b>Back</b></a>
</div>
我无法在页面中显示任何数据,而且我的控制台中没有错误。 ¿有什么想法吗?
答案 0 :(得分:0)
检查你的ajax/searchPost.php?postID=
api是这个api返回单个对象或数组,如果这个api返回对象应该可以工作但是如果你得到api的单元素数组,那么在你的api成功代码中使用数组元素data[0]
。
.controller("PostControlador", function($scope, $routeParams, PostAPI) {
GetPost();
$scope.title = "Editar post";
function GetPost() {
PostAPI.getOne($routeParams.id).success(function(data) {
$scope.post = data[0];
console.log($scope.post);
});
};
答案 1 :(得分:0)
使用then
success
的{{1}}。 .then
会返回一个承诺,以便您可以处理asynchrounous
次来电。
此外,您在函数定义之前调用getPost()
方法。所以它可能没有得到承诺。
在函数定义和检查之后调用您的getPost()
方法,以便它可以接收承诺。
.controller("PostControlador", function($scope, $routeParams, PostAPI) {
$scope.title = "Editar post";
function GetPost() {
PostAPI.getOne($routeParams.id).then(function(data) {
$scope.post = data[0];
console.log($scope.post);
});
};
GetPost();