首页 > 解决方案 > angular.copy() 不复制数组和选择排序不起作用

问题描述

我是 AngularJs 的新手,正在从事一个 AngularJs 项目。我遇到了其中一个代码段的问题,并希望得到您的帮助。

我有一个问题$scope.arrayEvent没有复制到$scope.arrayReminder. 在控制台日志中,我看到以下内容。

在此处输入图像描述

该任务是关于设置提醒。

$scope.sortedArrayEvent = function(){
   $scope.sortedArrayEvent = function(){
   // console.log('$scope.arrayEvent: '+$scope.arrayEvent);
   // $scope.arrayReminder  = angular.copy($scope.arrayEvent);

    $scope.arrayReminder =[{reminderName:"green",reminderTime:"06:00:00",reminderDate:"19/04/2020"},
                           {reminderName:"yellow",reminderTime:"07:00:00",reminderDate:"20/04/2020"},
                           {reminderName:"blue",reminderTime:"08:00:00",reminderDate:"18/04/2020"}];
    let index = $scope.arrayReminder.length;
    for(let i =0;i<index-1;i++){
        let minIndex =i;
        for (let j = i+1; j<index; j++){
            if ($scope.arrayReminder[j].reminderDate < $scope.arrayReminder[minIndex].reminderDate){
                minIndex = j;
            }
        }
        let temp = $scope.arrayReminder[minIndex];
        $scope.arrayReminder[minIndex] = $scope.arrayReminder[i];
        $scope.arrayReminder[i] = temp;

        $scope.sortedArray = [{sortedEventName:$scope.arrayReminder[2].reminderName,
            sortedEventTime:$scope.arrayReminder[2].reminderTime,
            sortedEventDate:$scope.arrayReminder[2].reminderDate,
        }]
    }
}

然后我尝试用 3 个对象对数组进行硬编码。我想拥有最新的reminderDate( {reminderName:"yellow",reminderTime:"07:00:00",reminderDate:"20/04/2020"}) 及其reminderNamereminderTime。但我得到了别的东西。

有人可以帮我解决这个问题吗?在解决了这个硬编码问题之后,我的最终目标是解决这个angular.copy()问题。这就是所需要的。请帮忙

标签: arraysangularjscopy

解决方案


我不确定你为什么需要深度克隆,但是angular.copy会创建一个新的对象/列表。

在你的情况下$scope.arrayReminder = angular.copy($scope.arrayEvent);

如果您对 进行任何操作$scope.arrayEvent则将 $scope.arrayReminder 保持不变


推荐阅读