使用Angular服务获取id元素

时间:2016-10-17 12:47:22

标签: javascript angularjs

我有一个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>

我无法在页面中显示任何数据,而且我的控制台中没有错误。 ¿有什么想法吗?

2 个答案:

答案 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();