angularjs ng-Modell wählen Sie nicht aktualisieren, richtig

Habe ich ein sehr einfaches Formular mit einem select mit allen Staaten + Abkürzungen. Wenn Sie die Tastatur zum navigieren der zweite Tastendruck nicht ändern ng-Modell-Wert unter bestimmten Umständen. Zum Beispiel, wenn Sie mit der Tabulatortaste in das select-element und drücken T es wird richtig auswählen, Tennessee, TN werden in die ng-model. Schlagen nach unten-oder T ein zweites mal updates der angezeigte Wert in Texas, aber das ng-Modell noch die TN. Sonderbar genug, diese nicht auftreten, wenn 2 verschiedene Buchstaben, so T, gefolgt von Einem richtig stellt AL in das ng-Modell.

Den HTML sieht wie folgt aus:

<div>
    <label for="user_city">City</label>
    <input type="text" name="user_city" id="user_city" ng-model="user.city" />
    <label for="user_state">State*</label>
    <select name="user_state" id="user_state" ng-model="user.state" style="width: 228px" required>
        <option value="AL">Alabama</option>
        <option value="AK">Alaska</option>
        <option value="AZ">Arizona</option>
        <option value="AR">Arkansas</option>
        <option value="CA">California</option>
        <option value="CO">Colorado</option>
        <option value="CT">Connecticut</option>
        <option value="DE">Delaware</option>
        <option value="DC">District Of Columbia</option>
        <option value="FL">Florida</option>
        <option value="GA">Georgia</option>
        <option value="HI">Hawaii</option>
        <option value="ID">Idaho</option>
        <option value="IL">Illinois</option>
        <option value="IN">Indiana</option>
        <option value="IA">Iowa</option>
        <option value="KS">Kansas</option>
        <option value="KY">Kentucky</option>
        <option value="LA">Louisiana</option>
        <option value="ME">Maine</option>
        <option value="MD">Maryland</option>
        <option value="MA">Massachusetts</option>
        <option value="MI">Michigan</option>
        <option value="MN">Minnesota</option>
        <option value="MS">Mississippi</option>
        <option value="MO">Missouri</option>
        <option value="MT">Montana</option>
        <option value="NE">Nebraska</option>
        <option value="NV">Nevada</option>
        <option value="NH">New Hampshire</option>
        <option value="NJ">New Jersey</option>
        <option value="NM">New Mexico</option>
        <option value="NY">New York</option>
        <option value="NC">North Carolina</option>
        <option value="ND">North Dakota</option>
        <option value="OH">Ohio</option>
        <option value="OK">Oklahoma</option>
        <option value="OR">Oregon</option>
        <option value="PA">Pennsylvania</option>
        <option value="RI">Rhode Island</option>
        <option value="SC">South Carolina</option>
        <option value="SD">South Dakota</option>
        <option value="TN">Tennessee</option>
        <option value="TX">Texas</option>
        <option value="UT">Utah</option>
        <option value="VT">Vermont</option>
        <option value="VA">Virginia</option>
        <option value="WA">Washington</option>
        <option value="WV">West Virginia</option>
        <option value="WI">Wisconsin</option>
        <option value="WY">Wyoming</option>
    </select>
</div>

Hier ein jsfiddle demonstriert das Problem: http://jsfiddle.net/cKF6Q/2/

Duplizieren, klicken Sie auf das Feld Stadt ein und drücken Sie dann TAB, um den Fokus im select-Feld und geben T. T Sie sehen Benutzer.Staat gehen, um die TN auf das erste drücken von T, aber die zweite wird ignoriert.

HINWEIS: Dies ist nur der ZWEITE Tastendruck, so müssen Sie die Seite neu laden, zwischen den tests.

  • Ich habe ein workaround für dieses Problem. Einstellung $scope.user = { state: 'AL' }; im inneren der Steuerung behebt das Problem. Immer noch sehr interessiert an der Lösung für dieses problem.
  • Melden Sie es als bug bitte.
  • Dies ist ein gemeldeter Fehler in angularjs, aber mein googlefu hat mich im Stich gelassen, ich kann es nicht wieder finden.
  • Von was ich mich erinnere auf den bug schreiben, wenn Sie ein auswählen, ohne einen leeren Wert und das ng-Modell-Wert "oder" null " dann Winkel erzeugt eine leere option am Anfang der Liste, so dass es nicht update-ng-Modell mit dem falschen Wert. Dann, wenn ein Wert ausgewählt wird, entfernt es die leere option am Anfang (also man kann nicht zurück gehen, um einen ungültigen Wert). Dies führt zu Problemen mit dem zweiten drücken der gleichen Taste, weil es einfach Schritten den ausgewählten index. Drücken einer anderen Taste wieder Fragen die Suche und legt den ausgewählten index.
  • Bug-Diskussion hier: github.com/angular/angular.js/issues/9134
InformationsquelleAutor brocksamson | 2014-03-26
Schreibe einen Kommentar