gpt4 book ai didi

javascript - 将克隆的元素添加到 ng-repeat

转载 作者:行者123 更新时间:2023-11-30 11:17:21 25 4
gpt4 key购买 nike

我知道为了能够在 ng-repeat 中添加“重复项”,您可以使用 track by,但这在我的情况下不起作用

我有以下 ng-repeat 指令:

<div class="well" ng-repeat="surveyData in surveyDatas track by $index">

我的用户可能想向该列表添加一个新的 SurveyData,它们之间的区别可能只是 50 个字段中的一个,因此克隆它是理想的解决方案,所以我尝试这样做:

DOM:

<button class="btn-sm btn-danger margin10" ng-click="cloneSurveyData(surveyData)">Clone Survey Data:</button>

Controller :

$scope.cloneSurveyData = function (surveyData){
surveyData.id = null;
$scope.surveyDatas.push(surveyData);
};

但是,当然,我得到:

Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: surveyData in surveyDatas | orderBy:'id', Duplicate key: object:150

我试过通过 id 进行跟踪,并在 Controller 中创建一个变量,然后将其与 SurveyData 相等,没有任何效果

创建新变量并均衡所有字段是我唯一的选择吗?

最佳答案

尝试使用 angular.copy 将 surveyData 复制到 tmp 变量,然后将其推送到数组:

$scope.cloneSurveyData = function (surveyData){
var temp = angular.copy(surveyData);
temp.id = null;
$scope.surveyDatas.push(temp);
};

编辑:

作为解释,我希望这会有所帮助:

您的示例代码中没有order by,但您在错误文本中有它:

Repeater: surveyData in surveyDatas | orderBy:'id', Duplicate key: object:150

使用您的代码,您只创建了一个引用并将其推送到数组。因此 orderBy 尝试对具有完全相同对象 ID 的两个对象进行排序。

关于javascript - 将克隆的元素添加到 ng-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51061947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com