очистка массива при закрытии диалога с помощью Javascript и AngularJS

#javascript #angularjs #controller

#javascript #angularjs #контроллер

Вопрос:

Я использую AngularJS. Следующий код находится в контроллере. Я пытаюсь заполнить $scope.highlighted объектами, для свойства highlight установлено значение true. Мне нужно, чтобы $scope.highlighted был очищен при закрытии диалогового окна. По какой-то причине $scope.выделенный в моей функции closeDialog() — это не тот массив, который я распространяю в getHighlighted() . Я не могу сказать, является ли это проблемой области AngularJS, проблемой ссылки на JavaScript или чем-то еще?

             $scope.highlighted = [];

            $scope.closeDialog = function () {
                console.log("closeDialog");
                // Hide the dialog
                $('#shared-list .modal').modal('hide');
                // Clean up data for next shared list
                console.log($scope.highlighted);
                while ($scope.highlighted.length > 0) {
                    console.log("pop");
                    $scope.highlighted.pop();
                }
                console.log($scope.highlighted);
            };

            $scope.getHighlighted = function (root) {
                var x, y;
                for (x in root.CurrentItems) {
                    console.log(root.CurrentItems[x].ItemLabel   ": "   root.CurrentItems[x].highlight);
                    if (root.CurrentItems[x].highlight == true) {
                        console.log("push");
                        $scope.highlighted.push(root.CurrentItems[x]);
                    }
                }
                for (y in root.Folders) {
                    console.log(root.Folders[y].FolderLabel   ": "   root.Folders[y].highlight);
                    if (root.Folders[y].highlight == true) {
                        console.log("push");
                        $scope.highlighted.push(root.Folders[y]);
                    }
                    $scope.getHighlighted(root.Folders[y]);
                }
            };

            $scope.showCreateSharedList = function () {
                console.log("showShared");
                console.log($scope.highlighted);
                $scope.getHighlighted($scope.favorites);
                console.log($scope.highlighted);
                if ($scope.highlighted.length == 0) {
                    alert("Please select one or more items and/or folders to share.");
                }
                else {
                    $("#shared-list .modal").modal();
                }
            };                
  

Комментарии:

1. Почему вы говорите, что это не тот же массив? Что консоль показывает после console.log($scope.highlighted); в closeDialog функции? Можете ли вы создать плунжер?

2. @Jerrad Он показывает пустой массив

3. Трудно диагностировать, не видя больше кода.