Ich habe ein einfaches Bootstrap-Popover, das geöffnet wird, wenn ich auf eine Schaltfläche klicke. Ich möchte eine Liste von Namen im Popover-Body mit einer Art Schleife anzeigen. Ich habe die Liste der Namen in meinem angularjs Controller. Ich verwende ng-repeat im Popover, um die Liste zu erstellen. ng-repeat funktioniert gut, wenn ich es außerhalb des Popover verwende, aber es scheint nicht korrekt im Popover-Body zu funktionieren.ng-repeat funktioniert nicht im Bootstrap-Popover
Es scheint sich so zu verhalten, als ob ich eine 2-Level-Nested-ng-Wiederholung in meinem Code habe, obwohl ich nirgends eine verschachtelte ng-Wiederholung habe! Außerdem scheint das Popover nicht vom richtigen Ort zu "springen" (es sollte aus der Taste herausspringen). Mache ich etwas falsch? Danke im Voraus! Hier ist die fiddle
Hier ist mein Code für das zeigt die popover:
$scope.showPopover = function() {
jQuery(function($) {
$('#pop').popover({
html: true,
container: 'body',
title: '<b style="margin-top:5px">Some Title</b> '+
'<button type="button" id="popoverCloseButton" class="close">×</button>',
content: function() {
return $compile($('#popover_content').html())($scope);
},
placement: 'auto right'
}).popover('show');
document.getElementById("popoverCloseButton").addEventListener("click", function(){
$scope.destroyPopover();
});
});
};
Dank @sourdoughdetzel für die Antwort. Die ng-Wiederholung funktioniert definitiv, wenn ich die Vorlage als String in $ compile (...) schreibe. Aber das ist nicht wirklich der beste Weg, es zu tun, wie Sie bereits erwähnt haben. Ich hoffe, dass uns jemand erklären kann, WARUM das passiert. –
Es könnte argumentiert werden, dass es besser ist, die HTML-Zeichenfolge in Ihrem Controller zu speichern, anstatt sie nur im DOM zu verstecken. – sourdoughdetzel