TypeError:无法读取属性'推'未定义的JavaScript

TypeError: Cannot read property 'push' of undefined, JavaScript

本文关键字:未定义 JavaScript 读取 属性 TypeError      更新时间:2023-09-26

我在这个Angular项目中工作,用户提交了一个评论表单,新的评论被添加到已经发布的评论中。这是我的密码。

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

然而,当我尝试添加评论时,我会收到以下错误。

TypeError: Cannot read property 'push' of undefined

我定义了一个空的$scope.comments={};那么为什么我会出现这个错误呢?我该怎么修?感谢

您声明的注释是一个Object。只需将您的声明更改为数组,

发件人:

$scope.comments = {};

收件人:

$scope.comments = [];

编辑:如果你需要推送新对象,你需要像这样将你的评论作为对象数组,并推送新的对象

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

你可以试试这个

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