2016-09-09 3 views
0

Ich habe eine Auswahlbox mit einigen ng-options, aber es aktualisiert nicht die ng-model, wenn ich eine Option auswählen. Ich habe ein Fiedel um http://jsfiddle.net/32tntojs/, um die Quelle zu sehen.ng-Modell wird nicht aktualisiert, wenn ich eine Option ändern

Mein HTML ist

<div ng-controller="MyCtrl"> 
PARENTID: {{ parent_id }} 
<select ng-model="parent_id" ng-options="project.id as project.groupingName for project in projects track by $index"></select> 
</div> 

und wenn ich etwas wählen, wird die parent_id nicht aktualisieren. Was mache ich falsch?

+0

Spur von Projekt .id – dharmesh

+0

@dharmesh Kann er den '$ Index' seines Controllers nicht benutzen? –

+0

@DavidR Der Wert als Textsyntax ist völlig korrekt. – Lex

Antwort

1

Aktualisiert Fiddle: https://jsfiddle.net/32tntojs/3/

Ihre projects Array von Objekten nicht id enthält so ersetzt es mit gid

HTML:

<select ng-model="parent_id" ng-options="project.gid as project.groupingName for project in projects"></select> 

Ein weiterer Fehler: as sollte nicht mit track by verwendet werden

Siehe AngularJS Docs - https://docs.angularjs.org/api/ng/directive/ngOptions

Be careful when using select as and track by in the same expression

3

Offenbar haben Ihre Projektobjekte keine ID-Eigenschaft. Wenn ich das Auswahlelement inspiziere, sind alle Optionswerte undefined.

Die ng-option Syntax sieht gut aus und das ng-Modell in der Tat Update, wenn ich es zu ändern:

<select ng-model="parent_id" ng-options="project.gid as project.groupingName for project in projects track by $index"></select> 
0

Sie nicht $index in ng-Optionen verwenden können (wie @ plong0 weist darauf hin).
Dies funktioniert:

<div ng-controller="MyCtrl"> 
    PARENTID: {{ parent_id }} 
    <select ng-model="parent_id" ng-options="project.id as project.groupingName for project in projects track by $index"></select> 
</div> 

updated fiddle See.

Verwandte Themen