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