HTML5: Wie setzen Sie den Fokus auf ein Texteingabefeld eine Liste mit AngularJS
Ich benutze AngularJS mit der ng-repeat-Direktive, um zu zeigen, ein array von Objekten als Liste.
<li ng-repeat="cue in cues" class="form-inline">
<input type="text" ng-model="cues[$index].text" class="input-xlarge"/>
{{cue.isNewest}}
</li>
Die Eigenschaft "isNewest" wahr ist nur auf ein element des Arrays. Ich würde gerne die Tastatur-Fokus auf das text-Eingabe, Punkt. Wie kann ich das machen mit AngularJS?
InformationsquelleAutor Marcel | 2013-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine weitere Umsetzung der Richtlinie, die verwendet attrs.$beachten Sie:
Beachten Sie, dass ein interpoliertes DOM-Attribut mit dem Wert (d.h.,
{{cue.isNewest}}
) immer ausgewertet, in einen string, und damit den Grundnewvalue
ist im Vergleich zu den string'true'
eher als Schlagworttrue
.HTML:
Diese fiddle hat auch eine Methode zum Umschalten, welches Element im array sollte den Fokus haben.
Beachten Sie, dass wenn Sie nicht laden, jQuery, brauchen wir
element[0].focus()
in die link-Funktion (nichtelement.focus()
) weil jqLite nicht über einen Fokus () - Methode.Akzeptiert über asgoth Antwort, weil es funktionierte beim ersten mal versucht und ist auch expalined.
Expected an assignment or function call and instead saw an expression
: Ich muss sagen, ich habe nicht eine Nebenwirkung in einem Ausdruck für Jahre, außer in einige one-liner Wettbewerbe, es sollte " if (cond) {hier stehen die}'.InformationsquelleAutor Mark Rajcok
Da würde dich manipulieren des DOM, erstellen Sie eine Richtlinie. So etwas wie:
Html:
Hinweis: ungetestet.
Ich bin jetzt das Lesen durch die erwähnte Richtlinie Dokument. Wendungen auf, mein Geist!
Verwenden elm[0].focus() wenn jQuery ist nicht geladen (auch wenn es geladen ist, könnte es besser sein, verwenden Sie diese syntax, wie sollte es auch immer funktioniert).
OK funktioniert ...es sei denn, Sie verwenden auch ng-focus / ng-blur. Dann werden Sie ausführen in "$digest "bereits im Gange" Gebiet.
InformationsquelleAutor asgoth
Es ist kein besonderes feature von AngularJS, die den Fokus erhält. Sie lösen könnte dies mit einem $ - Uhr in Ihrem controller, sondern auch mit einer Richtlinie.
Der controller in der Lage sein würde, das dom zu verändern, aber es ist nicht gutes design. So eine Richtlinie ist es für Sie 🙂
InformationsquelleAutor iwein
Den anderen vorgeschlagenen Antworten Arbeit OK 9/10 mal für mich, aber schon bald lief ich im "$digest "bereits in Arbeit" Spaß.
Habe ich eine leicht modifizierte version des vorherigen Antworten von asgoth und Mark Rajcok. Im Grunde fügen Sie die $timeout Abhängigkeit und legen Sie die focus () - Aufruf innerhalb eines Zeitlimits(...). IIRC ng-focus macht das gleiche.
InformationsquelleAutor Christophe Geers