Закрытие mdPanel, но не уничтожение контроллера - PullRequest
0 голосов
/ 20 января 2020

Использование AngularJS материала Я использую сервис mdPanel, чтобы предоставить пользователю опции фильтра для таблицы. Когда они выбирают параметр, таблица фильтруется, и отображается выбранный параметр, чтобы они знали, какой параметр фильтра был выбран.

Если они закрывают панель, отфильтрованная таблица остается, хотя при нажатии на Значок фильтра, чтобы открыть панель фильтра, вызывает метод mdPanel.open(), который вызывает новый экземпляр, в результате чего контроллер и отфильтрованные параметры сбрасываются.

view

<md-button data-ng-click="$ctrl.showFilter($event)">
    <span>Filter</span>              
</md-button>

контроллер

var panelRef;

function showFilter($event) {

        var config = {
            attachTo: angular.element(document.body),
            controller: ['mdPanelRef', '$scope', function(mdPanelRef, $scope) {

                $scope.categories = ['serviceType', 'currentStageColour'];
                $scope.filter = {};
                $scope.filtered = vm.filtered; //THIS IS USED FOR FILTERING TABLE

                $scope.updateFiltered = function(cat, value) {
                    $timeout(function(argument) {
                        $scope.filtered = vm.filtered;
                    })
                }

                $scope.closeDialog = function() {
                    mdPanelRef.cancel()
                }

            }],
            controllerAs: '$ctrl',
            targetEvent: $event,
            templateUrl: 'app/templates/portfolio/filter-panel.tpl.htm',
        };

        $mdPanel.open(config)
        .then(
            function(result) {
                panelRef = result;
            },
            function(error){
                console.error('Error occured when opening panel: ',error)
            }
        );

    }
}

Вопрос

Как скрыть и показать панель только после ее открытия один раз? Поэтому мне не нужно постоянно вызывать метод open(), который сбрасывает отфильтрованные параметры?

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