2

Ich überprüfe den Benutzerstatus und möchte eine menu entsprechend aktivieren und deaktivieren.Wie kann ich ein Angular Material-Menü über eine Controller-Funktion öffnen?

Im Markup:

<a ... ng-click="ctrl.userMenu($event)"></a> 

Und in der Steuerung:

ctrl.userMenu = function (e) { 
    if (ctrl.user.has.something) { 
     e.preventDefault(); 
     return false; 
    } else { 
     ctrl.openMenu($mdOpenMenu, e); 
    } 
}; 

Allerdings bedeutet dies das Menü nicht auslösen, wenn der sonst Fall wahr ist. Ich vermute ein Problem mit dem Umfang. Ich habe auch versucht, den Menü-Service-Anruf in einer anonymen Funktion zu verpacken. Das Menü wird wie erwartet geöffnet, wenn der Anruf direkt aus der Direktive ng-click erfolgt. Danke für jegliche Hilfe.

+0

können Sie eine Geige/Plunker zur Verfügung stellen? – Deep

Antwort

1

Stellt sich heraus, ich vergaß das Menü Service passieren zusammen mit der ng-click Richtlinie:

<a ... ng-click="ctrl.userMenu($mdOpenMenu, $event)"></a> 
// ---------------------------------^ 

ctrl.userMenu = function (m, e) { 
// -----------------------^ 
    if (ctrl.user.has.something) { 
     e.preventDefault(); 
     return false; 
    } else { 
     ctrl.openMenu(m, e); 
     // -----------^ 
    } 
};