Der Index der angularen md-Tabs ändert sich nicht

8

In meiner Angular App habe ich eine md-tabs, deren md-selected Direktive an eine Eigenschaft in meinem Controller gebunden ist. Ich möchte die aktuelle Registerkarte zu der ändern, deren Index durch eine Funktion festgelegt wird, die durch einen ng-Klick irgendwo anders in meiner Vorlage aufgerufen wird.

Ich habe es so gemacht:

%Vor%

In meinem Controller habe ich:

%Vor%

Aber es hat überhaupt keine Wirkung, wenn ich auf meine Schaltfläche klicke, die displaymap ();

aufruft

Ich habe das Problem untersucht:

  • Wenn ich $ scope.selectedIndex = 1 gesetzt habe; In meinem Controller ist die Standardregisterkarte diejenige mit dem Index 1. OK
  • Wenn ich md-selected="1" in meiner Vorlage festlege, ist die Standard-Registerkarte diejenige, deren Index 1 ist. OK
  • Wenn ich in meinem Code einen Haltepunkt einstelle und auf meine Schaltfläche klicke, wird displayMap () aufgerufen und $ scope.selectedIndex = 1; wird ausgeführt. OK

Es scheint alles funktioniert gut ... außer die Registerkarte ändert sich nicht.

Ich führe Angular Material 1.0.2

Ich habe sogar $ apply verwendet, um das Update zu erzwingen (kein Effekt):

%Vor%     
Ben 21.01.2016, 23:10
quelle

5 Antworten

6

Ich habe mein Problem gelöst, das sicherlich durch ein Problem mit dem Oszilloskop verursacht wurde. Ich habe einfach den Controller als -Syntax verwendet und alle vorherigen Scope-Daten mit

deklariert %Vor%

und mein Markup:

%Vor%

Funktioniert jetzt perfekt. Ich denke, mein ng-if änderte meinen Umfang oder so.

    
Ben 23.01.2016, 10:28
quelle
6

Ich bin froh, dass Sie eine Problemumgehung für Ihr Problem gefunden haben. Um dieses Verhalten zunächst zu vermeiden, sollten Sie sich diese Stackoverflow-Diskussion ansehen

Da Ihre selectedIndex-Variable ein primitives Element enthält, wird mit jedem neuen Scope, das Sie bereits erwähnt haben, die Datenbindung zerstört, und Änderungen innerhalb des untergeordneten Bereichs haben keine Auswirkungen auf das "outside".

In deinem Fall benutze einfach ...

%Vor%

... folgen Sie der Punktregel .

    
Moritz Herbert 23.05.2016 11:16
quelle
2

Vielleicht habe ich etwas über deine Frage missverstanden, aber das sollte funktionieren ...

Ich habe einen Plünderer erschaffen und ich kann dein Verhalten nicht reproduzieren, es funktioniert einfach gut.

Anzeigen :

%Vor%

Controller :

%Vor%

Könnten Sie das bitte überprüfen? Hoffe es hilft

Plunker hier

    
troig 22.01.2016 18:57
quelle
1

Hier ist meine Lösung:

%Vor%     
anarchist 08.12.2016 11:19
quelle
-1

Mit md-selected = 0 gehst du zum ersten Tab. Und md-selected = 1 zum zweiten Tab.

-Taste:

%Vor%

Controller:

%Vor%     
Oscar Caicedo 22.01.2016 02:29
quelle