angular .copy () не копирует массив и сортировка выбора не работает - PullRequest
1 голос
/ 19 апреля 2020

Я новичок в AngularJs и работаю над проектом AngularJs. У меня возникла проблема с одним из сегментов кода, и я хотел бы попросить вас помочь с этим.

У меня проблема, когда $scope.arrayEvent не копируется в $scope.arrayReminder. В журнале консоли я вижу следующее.

enter image description here

Задача заключается в установке напоминания.

$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"}) вместе с reminderName и reminderTime. Но я получаю кое-что еще.

Может кто-нибудь помочь мне исправить это? После того, как эта проблема с жестким кодом устранена, моя конечная цель - исправить проблему angular.copy(). Это то, что нужно. Пожалуйста, помогите

1 Ответ

0 голосов
/ 19 апреля 2020

Я не уверен, зачем вам глубокое клонирование, но angular.copy создает новый объект / список.

В вашем случае $scope.arrayReminder = angular.copy($scope.arrayEvent);

Если вы делаете любая манипуляция с $scope.arrayEvent, $scope.arrayReminder останется прежней .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...