Einstellung der aktiven Registerkarte auf dynamisch erstellten Registerkarten mit Angular UI Bootstrap
Habe ich eine dynamische tabset erzeugt, dass der Registerkarten aus einem array beginnt aus leer. Wenn ich ein neues Element hinzufügen, um das Feld es erscheint eine neue Registerkarte. Ich will, dass die zuletzt hinzugefügten Registerkarte, um die aktiven. Ich den aktiven index jedes mal, wenn ich ein Element Hinzugefügt, um das array
HTML:
<uib-tabset active="activeTabIndex">
<uib-tab ng-repeat="tab in tabs" heading="{{tab.title}}">Some content</uib-tab>
</uib-tabset>
JavaScript:
$scope.activeTabIndex = 0
$scope.tabs = [];
$scope.addTab = function() {
var newTab = { title: 'Tab ' + ($scope.tabs.length + 1) };
$scope.tabs.push(newTab);
$scope.activeTabIndex = ($scope.tabs.length - 1);
console.log($scope.activeTabIndex);
};
Hier ist das Zupfen für den vollständigen source-code der demo: https://plnkr.co/edit/TX6ek4R62AfM2zUXcoC3?p=preview
Das problem ist, es scheint zu funktionieren, bei einer ungeraden Anzahl von tabs nur. Hier ist, was ich meine:
Beim erstmaligen laden sieht es so aus:
Nachdem ich eine neue Registerkarte hinzuzufügen, es zeigt die aktiven richtig:
Wenn ich ein weiteres nichts wird ausgewählt, und activeTabIndex variable wird nicht definiert:
Und auf der 3. es beginnt wieder zu arbeiten:
So für noch aktive index-zahlen (0, 2) funktioniert es einwandfrei. Aber irgendwie statt der Active-Index: 1 es leer anzeigt und nicht die aktive Registerkarte. Ich Schreibe die variable auf der Konsole und es zeigt alle Werte korrekt an.
Jede Hilfe/Zeiger/Ideen sind willkommen.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut docs:
aktiv (Standard: Index der ersten Registerkarte) - Aktiv-index tab. Diese Einstellung zu einer bestehenden Registerkarte index werden, die Registerkarte aktiv.
Sorgen die tabs array enthält die aktiven, ich denke, Sie sollten hinzufügen ein $timeout gibt:
https://plnkr.co/edit/q4QP7zoB0HXSjn3MplE4?p=preview
Ich hatte das ähnliche problem, Aber ein wenig Komplexer. Ich lud meine dynamische Registerkarten aus der API, und ich hatte eine statische Registerkarte, und der rest waren dynamisch.
Ich zwei Variablen mit default-Werten:
Ersten, die ich geladen meine dynamische Registerkarten aus der API, Dann in der Erfolgs-callback, ich angegeben wird der Wert des
activeTabIndex
von tabs array. Dann änderte ich den Wert vonshowTabs
zu wahren.Teilte ich es, hoffe nur, es kann helfen, mehr Menschen mit diesem Fall.