Change index von AngularJS md-Tabletten haben überhaupt keine Wirkung
In meinem Angular app, ich habe einen md-Registerkarten, deren md-ausgewählte Richtlinie ist gebunden an eine Eigenschaft in meinem controller. Ich möchte zum wechseln der aktuellen Registerkarte zu der einen, deren index von einer Funktion namens von ng-klicken Sie irgendwo in meinem template.
Habe ich es auf diese Weise:
<div ng-controller="TrackingCtrl" layout-fill>
<md-content ng-if="isSmart" layout-fill>
<md-tabs md-selected="selectedIndex" layout-fill>
<md-tab>.........</md-tab>
<md-tab>.........</md-tab>
<md-tab>.........</md-tab>
<md-tab>
<md-tab-label>{{ 'tracking.positions.TITLE' | translate }}</md-tab-label>
<md-tab-body>
<md-tab-content layout-fill flex>
<button ng-click="map.panTo(getPosition());displayMap();"></button>
</md-tab-body>
</md-tab>
</md-tabs>
</md-content>
</div>
In meinem controller habe ich :
$scope.selectedIndex = 0;
$scope.displayMap = function() {
$scope.selectedIndex = 1;
};
Aber es hat überhaupt keine Wirkung wenn ich auf meine Taste, die Anrufe displayMap();
Habe ich überprüft, das problem:
- Wenn ich den $scope.selectedIndex = 1; in meinem controller, der Standard-Registerkarte ist der eine, dessen index 1 ist. OK
- Wenn ich den md-selected="1" in meinem template, die Standard-tab ist derjenige, dessen index 1 ist. OK
- Wenn ich einen Haltepunkt in meinem code, und wenn ich auf meine Schaltfläche, displayMap() aufgerufen wird, und $scope.selectedIndex = 1; ausgeführt wird. OK
Es scheint, funktioniert alles einwandfrei... außer die Registerkarte nicht ändern.
Ich bin mit Winkel-Material 1.0.2
Ich auch benutzt $gelten für "force update" (kein Effekt) :
$scope.selectedIndex = 0;
$scope.displayMap = function () {
$timeout(function () {
if (!$scope.$$phase) {
$scope.$apply(function () {
$scope.selectedIndex = 1;
});
}
});
};
- FYI - $timeout von selbst löst $gelten intern . Beantwortet nicht die Frage ... nur auf der Durchreise auf info
- Schlage vor, check-in-eckig-material github issue-tracker auch. Vielen tabs Probleme gibt
- Ja, ich will check this out
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin froh, dass du gefunden eine Lösung für Ihre Problem. Um zu vermeiden, dass Verhalten zunächst sollten Sie wahrscheinlich haben einen Blick auf diese stackoverflow-Diskussion.
Seit Ihr selectedIndex variable hat einen primitiven, jedem neuen Bereich eingeführt - Sie erwähnten bereits die ngIf - zerstört die Daten verbindlich und Veränderungen innerhalb der untergeordneten Bereich wird keine Auswirkung auf die 'außen'.
In Ihrem Fall, verwenden Sie einfach...
...zu Folgen die dot Regel.
Ich mein problem gelöst, das war sicherlich verursacht durch einen scope-Ausgabe. Ich benutzte einfach die controller als syntax, und erklärte, alle bisherigen Umfang Daten mit:
und mein markup:
Funktioniert jetzt perfekt. Ich glaube, mein ng-wenn ändern mein scope oder so.
Ich vielleicht falsch verstanden habe, etwas über Ihre Frage, aber diese sollte funktionieren...
Habe ich einen plunker und ich nicht reproduzieren kann Ihr Verhalten, es funktioniert einfach gut.
Ansicht:
Controller:
Könnten Sie bitte überprüfen Sie es? Hoffe es hilft
Plunker hier
hier ist meine Lösung:
Mit md-selected = 0 gehen Sie auf die erste Registerkarte. Und md-selected = 1 auf die zweite Registerkarte.
button:
controller: