2014-07-16 4 views

Antwort

28

Die ng-model Bindung bewertet ihren Ausdruck im aktuellen Bereich. Da ng-repeat einen untergeordneten Bereich erstellt, bedeutet das, dass ng-model auf dem untergeordneten Bereich nach einer Eigenschaft mit dem Namen value sucht. In Ihrem Beispiel würden wir erwarten, dass es nach der val-Eigenschaft auf dem übergeordneten Element Bereich sucht, der Alias ​​zu t ist.

Dies ist beabsichtigt und kann in Ihrem Fall umgangen werden, indem Sie im Ausdruck auf den übergeordneten Bereich t verweisen.

Working demo

-Code (Bekanntmachung über das Eingangselement der Bindung geändert hat):

<section ng-repeat="t in test"> 
    <div ng-repeat="(key,value) in t"> 
    <div>{{key}}</div> 
    <input type="text" ng-model="t[key]"/> 
    </div> 
</section> 

Wie Sie eine Betaversion von Angular 1.3 verwenden, das ein Fehler sein kann.

+4

Wenn kein '.' Wenn in ng-model das Modell im Bereich zugewiesen wird (dh Text wird in das Eingabefeld eingegeben), erstellt es eine Schattenvariable im untergeordneten Bereich (ng-repeat erstellt den untergeordneten Bereich), bei der es sich um eine Kopie der Variablen handelt im übergeordneten Bereich - breaking Zwei-Wege-Bindung. Das ist Absicht - kann aber viel Verwirrung stiften. Array-Notation (Element []) ist die Ausnahme. – pixelbits

Verwandte Themen