Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

123
Visualizações
Popover AngularJs todavía se muestra incluso después de configurar su disparador en ninguno

Aparece la ventana emergente "Gracias" al hacer clic en el pulgar hacia arriba por primera vez, pero sigue apareciendo la segunda vez que se hace clic en el pulgar hacia arriba, incluso después de configurar su disparador en "ninguno".

Pasos para reproducir:

  1. Haga clic en cualquier pulgar hacia arriba, aparecerá la ventana emergente 'Gracias'
  2. Haga clic en cualquier lugar fuera, como el área blanca, para descartar la ventana emergente 'Gracias'
  3. Vuelva a hacer clic en el pulgar hacia arriba y la ventana emergente "Gracias" seguirá apareciendo.

En el código, configuré mi propia directiva personalizada para configurar condicionalmente el disparador de popover de modo que cuando se hace clic en el pulgar hacia arriba una vez, establecerá el disparador de popover en 'ninguno': Inspeccionado en la pestaña Elemento que el disparador de popover está realmente configurado en ninguna.

Código en html:

 <span ng-click="sendFeedback(false, result.id)" uib-popover="Thanks" popover-trigger="'outsideClick'" ... my-directive shown="this.shown[result.id]"> </span>

Código en el controlador:

 feedbackApp.directive('myDirective', function () { return { restrict: 'A', scope: { shown: '=', }, link: function(scope, element, attrs) { scope.$watch('shown', function(shown) { if (shown) attrs.$set('popover-trigger', "none"); } }); } }; });

Simulación del problema

La conclusión es que si el usuario tiene la intención de deshacer el pulgar hacia arriba, la ventana emergente "Gracias" no debería aparecer.

Aquí está mi código completo en el repositorio público

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Intenta cambiar el DOM mediante inyección attrs.$set('popover-trigger', "none") y la plantilla AngularUI compilada no lo reconoce. Puede volver a compilar la plantilla, pero esto no es necesario. Su enfoque es demasiado complejo para un requisito tan simple. Simplemente use la opción popover-enable y estará bien. No necesita manejar esto dentro de una directiva. Además, $watch no es necesario.

 angular.module('demoApp', ['ui.bootstrap']) .controller('DemoCtrl', function ($scope, $compile) { $scope.popoverState = true; $scope.clicked = function () { $scope.popoverState = false; }; }); /* EOF */
 <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> <script src="//code.jquery.com/jquery-2.1.4.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0-rc.0/angular.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.14.3/ui-bootstrap-tpls.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-calendar/1.0.0/calendar.js"></script> <div ng-app="demoApp"> <div ng-controller="DemoCtrl"> <br /> <br /> <br /> <button popover-placement="top" ng-click="clicked()" uib-popover="On the top" type="button" popover-enable="popoverState" class="btn btn-default ng-binding" my-directive>Popover top</button> </div> </div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda