TypeError: Impossible de lire la propriété 'push' de undefined, JavaScript

Je travaille dans ce projet Angular où l'utilisateur soumet un formulaire de commentaire et le nouveau commentaire est ajouté aux commentaires déjà publiés. Voici mon code.

.controller('productCtrl', function($scope, $http, $routeParams, Page){ $scope.product = {}; $scope.review = {}; $scope.comments = {}; routeparm = $routeParams.param; $scope.review = function(){ var review_box = $scope.review_form.review_box; $http.post('./comment.php', { comment : review_box, code: routeparm }) .success(function(data){ $scope.comments.push(data.comments); $scope.review.review_box = ''; }) .error(function(data){ $scope.has_error = true; $scope.error_message = data; }) }; 

Cependant, lorsque j'essaie d'ajouter un commentaire, j'ai l'erreur suivante.

 TypeError: Cannot read property 'push' of undefined 

J'ai défini un chiffre d'affaires vide = {}; Alors pourquoi obtenez-je cette erreur? Et comment puis-je le réparer? Merci

Les commentaires que vous avez déclarés sont un objet. Modifiez simplement votre déclaration à un tableau,

De:

 $scope.comments = {}; 

À:

 $scope.comments = []; 

EDIT: si vous devez pousser un nouvel objet, vous devez faire vos commentaires en tant que tableau d'objets comme celui-ci et appuyer sur le nouvel objet

 $scope.comments = { 1: {name:'',review:'',comment:'',uptime:'',gravatar:''} } $scope.comments.push({name:'rukshi', review:'test comment',comment:'yet another comment',uptime:'',gravatar:''}); 

Vous pouvez essayer ceci

 .controller('productCtrl', function($scope, $http, $routeParams, Page){ $scope.product = {}; $scope.review = {}; $scope.comments = []; routeparm = $routeParams.param; $scope.review = function(){ var review_box = $scope.review_form.review_box; $http.post('./comment.php', { comment : review_box, code: routeparm }).success(function(data){ $scope.comments.push(data.comments); $scope.review.review_box = ''; }).error(function(data){ $scope.has_error = true; $scope.error_message = data; }) };