Testfall: http://jsbin.com/ahugeg/4/edit (Ein wenig lang)ändert Fokus auf Eingabe auf einem Schlüsselereignis in AngularJS
Im obigen Test Fall habe ich drei Eingangselemente, durch ng-repeat
Richtlinie erzeugt. In diesem Testfall beabsichtige ich, dass das Drücken der Pfeile nach oben/unten in einem dieser Eingänge den Fokus auf den Eingang in die entsprechende Richtung richten sollte, wenn ein Eingang in dieser Richtung verfügbar ist.
Ich bin neu in AngularJS, also könnte ich auf eine einfache Art und Weise fehlen, dies zu tun. Wie auch immer, ich habe zwei neue Direktiven (on-up
und on-down
) definiert, um die Ereignisse nach oben und unten zu behandeln und die Methoden $scope.focusNext
und $scope.focusPrev
aufzurufen und den richtigen Eintrag zu übergeben, relativ zu dem sich der Fokus bewegen sollte. Hier stecke ich fest.
Ich weiß, es ist nicht die Winkel Weg mit DOM-Elemente in Controllern zu tun, aber ich kann nicht sehen, wie der Fokus kann als Attribut/Eigenschaft eines Modells zu sehen. Ich dachte sogar an eine separate $scope.focusedEntry
, aber sollte ich dann Uhr für Änderungen auf dieser Eigenschaft? Auch wenn ich Änderungen erkenne, wie kann ich auf das Eingabeelement zugreifen, das dem zu fokussierenden Eintrag entspricht?
Jede Hilfe, wie dies getan werden sollte, wird sehr geschätzt.
Danke.Ihre Lösung hat mir die Idee und Motivation gegeben, alleine zu arbeiten. Ich habe einen etwas anderen Ansatz gewählt, indem ich eine Direktive für das Elternelement des 'ng-repeat'ed-Elements definiere, das den Selektor von 'input' annimmt, auf den der Fokus verschoben werden soll. Ich poste meine Lösung in einer Minute. Danke noch einmal. –