Ich habe zwei Bootstrap-Registerkarten auf einer Seite und jede Registerkarte zeigt eine Liste an. Ich möchte jedes Listenelement ein Quadrat und schrieb diese AngularJS Richtlinie, um die Höhe jedes Listenelement auf seiner Bootstrap kontrollierte dynamische Breite gleich sein:Warum funktioniert diese Width-AngularJS-Direktive nicht beim Wechseln der Bootstrap-Registerkarten?
app.directive('squareDiv', function() {
return {
restrict: "A",
link: function (scope, element,attr) {
scope.getWidth = function() {
return element.width();
};
scope.$watch(scope.getWidth, function (width) {
element.css({
height: width + 'px'
});
}, true);
}
};
});
Wenn ich diese Seite laden, die erste Registerkarte Listenelemente Als Quadrate erscheinen, was bedeutet, dass die Richtlinie funktioniert. Aber wenn ich auf eine andere Registerkarte klicke, haben die Listenelemente dort die Standardhöhe von 100 px. Wenn ich zurück zur ersten Registerkarte wechsle, haben jetzt auch die Listenelemente die Standardhöhe.
Was läuft hier falsch?
UPDATE 1:
hier die Verbindung zu einer Plunker, die dieses Problem veranschaulicht: http://plnkr.co/edit/Pc7keuRXR9R3U6AhZmFE?p=preview
UPDATE 2:
Plunker mit Bootstrap ersetzt durch die UI-Bootstrap, die immer noch das gleiche Problem hat: http://plnkr.co/edit/rLE1wUAHKzJP6FVnGF6b?p=preview
UPDATE 3:
Plunker mit Uhr für die anstelle Registerkarte Schalter der Breitenänderung (Workaround für das ursprüngliche Problem der Breitenuhr funktioniert nicht richtig; muss eine separate Direktive für die Anpassung an Breitenänderungen aufgrund von Fenstergrößenänderung verwenden): http://plnkr.co/edit/Y4Goe0cexq979JsIcBxl?p=preview
Ich würde immer noch gerne verstehen, warum die Weitenuhr nach einem Tabschalter nicht mehr ordnungsgemäß funktioniert.
Es kann sein, weil die Reiter versteckt ist, so dass ihr Inhalt noch nicht Dimensionen haben. Wie auch immer, es würde helfen, wenn du einen Plunder machst oder so. –
Das ist richtig, ein Plünderer könnte eine große Hilfe sein! –
Hier ist der Link zu einem Plunker, der dieses Verhalten veranschaulicht: http://plnkr.co/edit/Pc7keuRXR9R3U6AhZmFE?p=preview Direktive funktioniert auf Tab 1, aber nicht auf Tab 2 – Price