В моем приложении AngularJS я использую сервис $mdPanel
для предоставления панели фильтров. Служба вызывается, когда пользователь нажимает кнопку, и когда пользователь выбирает параметр фильтра, он обновляет таблицу и предоставляет чип фильтра (пользователи могут видеть то, что они выбрали) в заголовке таблицы.
просмотр - таблица
<md-button data-ng-click="$ctrl.showFilter($event)">
Filter
</md-button>
просмотр - панель фильтра
<div>
<md-list ng-repeat="cat in categories">
</md-list>
<div>
<md-button data-ng-click="closeDialog();">
Close
</md-button>
</div>
</div>
контроллер
var panelRef;
function showFilter($event) {
var config = {
attachTo: angular.element(document.body),
controller: ['mdPanelRef', '$scope', function(mdPanelRef, $scope) {
//LOGIC TO FILTER TABLE DATA AND PROVIDE SELECTED FILTER OPTION GOES HERE
}],
controllerAs: '$ctrl',
targetEvent: $event,
templateUrl: 'app/templates/portfolio/filter-panel.tpl.htm',
clickOutsideToClose: true,
escapeToClose: true,
};
$mdPanel.open(config)
.then(
function(result) {
panelRef = result;
},
function(error){
}
);
}
Проблема заключается в том, что когда панель фильтра открывается, вызывая showFilter
, а затем закрывается, затем снова открывается объявление, служба вызывается снова, вызывая новый экземпляр и сбрасывая все сохраненные значения. в контроллере конфигурации mdPanel
, сбрасывая опции фильтра, которые мне не нужны.
Вопрос
Как мне поддерживать один экземпляр mdPanel
с первоначального открытия? Пользователь может открывать и закрывать его сколько угодно, но все значения в контроллере сохраняются