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:
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"); } }); } }; });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
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>