Ionic - Javascript Popover

Esta é uma visualização que aparecerá acima da visualização normal.

Usando Popover

Um Popover pode ser criado usando ion-popover-viewelemento. Este elemento deve ser adicionado ao modelo HTML e ao$ionicPopover o serviço precisa ser injetado no controlador.

Existem três maneiras de adicionar popover. O primeiro é ofromTemplatemétodo, que permite usar o modelo embutido. A segunda e a terceira maneira de adicionar popover é usar ofromTemplateUrl método.

Vamos entender o fromtemplate método conforme explicado abaixo.

Código do controlador para método Fromtemplate

.controller('DashCtrl', function($scope, $ionicLoading, $ionicPopover) {
   // .fromTemplate() method
   var template = '<ion-popover-view>' + '<ion-header-bar>' +
      '<h1 class = "title">Popover Title</h1>' +
      '</ion-header-bar>'+ '<ion-content>' +
      'Popover Content!' + '</ion-content>' + '</ion-popover-view>';

   $scope.popover = $ionicPopover.fromTemplate(template, {
      scope: $scope
   });

   $scope.openPopover = function($event) {
      $scope.popover.show($event);
   };

   $scope.closePopover = function() {
      $scope.popover.hide();
   };

   //Cleanup the popover when we're done with it!
   $scope.$on('$destroy', function() {
      $scope.popover.remove();
   });

   // Execute action on hide popover
   $scope.$on('popover.hidden', function() {
      // Execute action
   });

   // Execute action on remove popover
   $scope.$on('popover.removed', function() {
      // Execute action
   });
})

Conforme discutido acima, a segunda e a terceira maneira de adicionar popover é usar fromTemplateUrlmétodo. O código do controlador será o mesmo para ambas as formas, exceto ofromTemplateUrl valor.

Se o HTML for adicionado a um modelo existente, o URL será o popover.html. Se quisermos colocar o HTML na pasta de modelos, o URL mudará paratemplates/popover.html.

Ambos os exemplos foram explicados abaixo.

Código do controlador para fromTemplateUrl

.controller('MyCtrl', function($scope, $ionicPopover) {

   $ionicPopover.fromTemplateUrl('popover.html', {
      scope: $scope
   }).then(function(popover) {
      $scope.popover = popover;
   });

   $scope.openPopover = function($event) {
      $scope.popover.show($event);
   };

   $scope.closePopover = function() {
      $scope.popover.hide();
   };

   //Cleanup the popover when we're done with it!
   $scope.$on('$destroy', function() {
      $scope.popover.remove();
   });

   // Execute action on hide popover
   $scope.$on('popover.hidden', function() {
      // Execute action
   });

   // Execute action on remove popover
   $scope.$on('popover.removed', function() {
      // Execute action
   });
})

Agora, vamos adicionar o script com modelo para o arquivo HTML, que estamos usando para chamar a função popover.

Código HTML do arquivo HTML existente

<script id = "popover.html" type = "text/ng-template">
   <ion-popover-view>
	
      <ion-header-bar>
         <h1 class = "title">Popover Title</h1>
      </ion-header-bar>
		
      <ion-content>
         Popover Content!
      </ion-content>
		
   </ion-popover-view>
</script>

Se quisermos criar um HTML como um arquivo separado, podemos criar um novo arquivo HTML no templates pasta e use o mesmo código que usamos no exemplo acima mencionado sem o script Tag.

O arquivo HTML recém-criado é o seguinte.

<ion-popover-view>
   <ion-header-bar>
      <h1 class = "title">Popover Title</h1>
   </ion-header-bar>
	
   <ion-content>
      Popover Content!
   </ion-content>
</ion-popover-view>

A última coisa que precisamos é criar um botão que será clicado para mostrar o popover.

<button class = "button" ng-click = "openPopover($event)">Add Popover</button>

Seja qual for a maneira que escolhermos nos exemplos acima, a saída será sempre a mesma.

A tabela a seguir mostra o $ionicPopover métodos que podem ser usados.

Método Opção Tipo Detalhe
inicializar (opções) scope, focusFirst, backdropClickToClose, hardwareBackButtonClose objeto, booleano, booleano, booleano Scopeé usado para passar o escopo personalizado para o popover. O padrão é $ rootScope.focusFirstInput é usado para focalizar automaticamente a primeira entrada do popover. backdropClickToClose é usado para fechar o popover ao clicar no pano de fundo. hardwareBackButtonClose é usado para fechar o popover quando o botão Voltar do hardware é pressionado.
show ($ event) $ evento promessa Resolvido quando o popover termina de ser exibido.
ocultar() / promessa Resolvido quando o popover termina de ser escondido.
retirar() / promessa Resolvido quando o popover termina a remoção.
é mostrado() / boleano Retorna verdadeiro se popover é mostrado ou falso se não é.