Danke Lauren Campregher, dies gearbeitet.
Ihr Code ist der einzige, der auch die Statusänderung für den Bereich ausführt.
Nur so konfiguriert, dass wenn Sie auf das Popover klicken, das letztere schließt.
Ich habe Ihren Code gemischt, und jetzt funktioniert es auch, wenn Sie in das Popover klicken.
Ob das System, ob durch popover-Vorlage getan,
Um es erkennbar Pop-up mit popover-Template fertig zu machen, habe ich Klassen popover- Körper und popover-Titel, entsprechend dem Kopf und der Körper der popover mit der Vorlage gemacht, und dafür sorgen, er zeigt direkt auf sich im Code platzieren:
angular.element(document.body).bind('click', function (e) {
var popups = document.querySelectorAll('.popover');
if(popups) {
for(var i=0; i<popups.length; i++) {
var popup = popups[i];
var popupElement = angular.element(popup);
var content;
var arrow;
if(popupElement.next()) {
//The following is the content child in the popovers first sibling
// For the classic popover with Angularjs Ui Bootstrap
content = popupElement[0].querySelector('.popover-content');
// For the templating popover (popover-template attrib) with Angularjs Ui Bootstrap
bodytempl = popupElement[0].querySelector('.popover-body');
headertempl= popupElement[0].querySelector('.popover-title');
//The following is the arrow child in the popovers first sibling
// For both cases.
arrow = popupElement[0].querySelector('.arrow');
}
if(popupElement[0].previousSibling!=e.target && e.target != content && e.target != arrow && e.target != bodytempl && e.target != headertempl){
popupElement.scope().$parent.isOpen=false;
popupElement.remove();
}
}
}
});
jemals einen guten Tag, danke Lauren, danke AngularJS, danke soviel Stapel Familie!
Aktualisiert:
ich alle Hinzufügen von zusätzlichen Steuer aktualisiert. Die Elemente innerhalb des Popover wurden von der Steuerung ausgeschlossen (z. B. ein Bild, das in den Hauptteil des Popover eingefügt wurde). Dann klickte man auf das selbe.
Ich löste den Befehl von API Node.contains, integriert in einer Funktion, die wahr oder falsch zurückgibt.
Jetzt mit jedem Element nach innen gesetzt, führen Sie die Kontrolle und hält die popover geöffnet, wenn Sie im Inneren klicken:
// function for checkparent with Node.contains
function check(parentNode, childNode) { if('contains' in parentNode) { return parentNode.contains(childNode); } else { return parentNode.compareDocumentPosition(childNode) % 16; }}
angular.element(document.body).bind('click', function (e) {
var popups = document.querySelectorAll('.popover');
if(popups) {
for(var i=0; i<popups.length; i++) {
var popup = popups[i];
var popupElement = angular.element(popup);
var content;
var arrow;
if(popupElement.next()) {
//The following is the content child in the popovers first sibling
// For the classic popover with Angularjs Ui Bootstrap
content = popupElement[0].querySelector('.popover-content');
// For the templating popover (popover-template attrib) with Angularjs Ui Bootstrap
bodytempl = popupElement[0].querySelector('.popover-body');
headertempl= popupElement[0].querySelector('.popover-title');
//The following is the arrow child in the popovers first sibling
// For both cases.
arrow = popupElement[0].querySelector('.arrow');
}
var checkel= check(content,e.target);
if(popupElement[0].previousSibling!=e.target && e.target != content && e.target != arrow && e.target != bodytempl && e.target != headertempl&& checkel == false){
popupElement.scope().$parent.isOpen=false;
popupElement.remove();
}
}
}
});
Ich habe versucht, unter Code verwende aber nicht hier arbeiten http://jsfiddle.net/anam123/6TnfQ/1/ – anam
Um zu vermeiden, Bootstrap bearbeiten nur ersetzen Sie die $ ('. Popover-Link') Selektor mit etwas in den Linien von $ ('[popover-trigger = "klick"] ') –