2016-06-14 2 views
3

У меня есть объект JSON как это:angularjs: проталкивание не функция

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; 
    }); 
}; 

Но делать это, я получаю ошибку JavaScript, говорящий push is not a function в строке 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"} 

Может ли кто-нибудь помочь мне выяснить причину этой проблемы?

UPDATE:

{ 
    "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);

+1

Перед нажимным звонком вы можете добавить это: console.log (favoritePost); и отправить результат – Silvinus

+0

OK. Дай мне минуту. @Silvinus – Annabelle

+1

Эта ошибка означает, что 'likers' не является массивом –

ответ

6

Выход четко указывает, что 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); 
0

likedPost Ваш объект не имеет likers массив, который вы ожидаете. Вероятно, вы можете увидеть, существует ли это, прежде чем пытаться нажать.

if (typeof likedPost !== 'undefined') 
    likedPost.likers.push(userObject); 
Смежные вопросы