You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS如何将新评论合并到JSON数组避免覆盖原有历史评论

问题根因

  1. 初始化$scope.updatecomments数组时没有同步当前选中项目的历史评论,数组内仅包含你新增的评论,提交时直接覆盖了接口返回的原有评论内容
  2. 之前尝试的合并写法存在语法错误:Array.push()返回值是数组长度而非数组本身,在push后链式调用concat不会生效,也没有在切换项目时更新评论数组的基础内容
  3. 自行编写的合并函数错误地将已解析为对象的$scope.projectDetails.Comments当做JSON字符串执行JSON.parse,逻辑无法正常运行

修复方案

步骤1:切换项目时同步历史评论

修改showData方法,选中项目时直接把该项目的历史评论同步到$scope.updatecomments,保证数组初始就包含全部历史内容:

$scope.showData = function(x){
  $scope.projectDetails = x;
  // 做兼容判空,避免项目无历史评论时报错
  $scope.updatecomments = Array.isArray($scope.projectDetails.Comments) ? [...$scope.projectDetails.Comments] : [];
};

步骤2:修改新增评论逻辑

直接往已经包含历史评论的$scope.updatecomments中追加新内容即可,可以增加输入校验避免空评论提交:

$scope.addnewcomment = function() {
  // 过滤空评论
  if (!$scope.NewComment || $scope.NewComment.trim() === '') return;
  $scope.updatecomments.push({
    "Author": "test",
    "Text": $scope.NewComment.trim()
  });
  // 新增后清空输入框,避免重复添加
  $scope.NewComment = '';
}

步骤3:提交逻辑无需修改

你现有的updateProject方法已经把$scope.updatecomments作为评论字段提交,现在这个数组已经包含全部历史+新增评论,不会再出现覆盖问题。

内容的提问来源于stack exchange,提问作者Andiie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:54:00