angularjs:Push不是一个函数

时间:2016-06-14 09:21:47

标签: javascript angularjs json

我有一个像这样的JSON对象:

var post = {
    "post_id": "1",
    "content": "content",
    "post_author": {
        "id": "12",
        "firstName": "Amelia",
        "lastName": "Earheart",
    },
    "isLiked": false,
    "likes_count": 0,
    "likers": [],
    "comments_count": 0,
    "commenters": [],
    "comments": []
};

post从前端传递给下面给出的函数。

var vm = this;
vm.likePost = function(post) {
    var likedPost = post;
    vm.userInfo();
    likedPost.likers.push(userObject); //Here

    myService.postLike(likedPost).success(function(data) {
        likedPost.isLiked = true;
        likedPost.likes_count++;
        vm.posts = data;
    });
};

但是这样做,我在第push is not a function

中收到一条JavaScript错误likedPost.likers.push(userObject);

userObject返回vm.userInfo(),它看起来像这样:

vm.userInfo = function() {
    myService.getBasicUserInfo().success(function(data) {
        vm.currentPost.post_author.id = data.id;
        vm.currentPost.post_author.firstName = data.firstName;
        vm.currentPost.post_author.lastName = data.lastName;
    });
};

,返回的JSON是这样的:

{"id":"12","firstName":"Amelia","lastName":"Earheart"}

任何人都可以帮我弄清楚这个问题的原因吗?

更新:

{
    "post_id": "12",
    "content": "Content is the content that contains the content",
    "image": "member-default.jpg",
    "created_at": "2016-05-26 14:29:00",
    "post_author": {
        "id": "12",
        "firstName": "Amelia",
        "lastName": "Earheart",
    },
    "isLiked": false,
}

这是我console.log(likedPost);

所得到的

2 个答案:

答案 0 :(得分:7)

输出明确指出未定义likers。您可以在使用push()方法之前进行验证检查。

//if likedPost.likers is not defined, it will define it as an array 
likedPost.likers = likedPost.likers || [];

//Do the push operation
likedPost.likers.push(userObject);

答案 1 :(得分:0)

您的likedPost对象没有您期望的likers数组。在试图推动之前,你可能会看到它是否存在。

if (typeof likedPost !== 'undefined')
   likedPost.likers.push(userObject);