2017-06-28 3 views
0

Ich hatte eine Liste Array von ng-Modell auf meine Optionen. Jedes ng-Modell, das mit verschiedenen Werten zugewiesen wird, hängt von den Benutzereingaben ab. Es funktioniert für mich, als ich versuchte, die Optionen-Box auszuwählen und das Ergebnis produziert, was ich will. Aber als ich neue Daten von der API abrief und den Wert in diese Optionsbox analysierte. Funktioniert nicht.Wie akzeptiere ich Wert auf Optionsbox

HTML

<div ng-repeat="($a_choice_index, c) in menu.additionalchoice"> 
    <label for="max_select" class="rl-label required">Do you want maximum select? 
    <label for="max_select" class="select-block"> 
     <select id="max_select" name="max_select" ng-model="c[$a_choice_index].maxSelect" ng-change="selectMaxSelect(c[$a_choice_index].maxSelect, $a_choice_index)" ng-options="o.name for o in maxSelectOptions"></select> 
     <svg class="svg-arrow"> 
     <use xlink:href="#svg-arrow"></use> 
     </svg> 
    </label> 
    </label> 
</div> 

-Controller

$scope.menu = {}; 
$scope.maxSelectOptions = [ 
{ 
    name: "No", 
    value: 0 
}, 
{ 
    name: "Yes", 
    value: 1 
} 
]; 

$scope.selectMaxSelect = function(v, index){ 
    $scope.menu.mealchoices[index].max_select = v; 
}; 

MyService.GetData(function(menu){ 
    $scope.menu = menu; // menu.additionalchoice is added into menu 
}); 

-API-Daten

Jeder menu.additionalchoice produziert

{"1": {"title": "Lieblingsöle hinzufügen", "maxSelect": {"name": "Nein", "Wert": 0}}, "title": "Lieblingsöle hinzufügen" "max_select": 4, "additional_choice": 1, "MaxSelect": 1, "Mahlzeiten": ...

Als ich versuchte zu:

1) ng-init="c[$a_choice_index].maxSelect = c.maxSelect"

Es zeigt leer.

2) ng-init="selectMaxSelect(c.maxSelect, $a_choice_index)"

Es zeigt einige Werte, aber der Wert ist falsch. c[$a_choice_index].maxSelect gibt {"name": "No", "value": 0} zurück, wenn c.maxSelect == 1 das JA ist.

+0

Können Sie Plukr erstellen. –

+0

Probieren Sie ng-init = "c [$ a_choice_index] .maxSelect = o [0]" – Vivz

Antwort

0

Sie können die Auswahloption nur nach Wert mit Hilfe der ... as ... for ... in ...-Syntax binden, was im Vergleich zur Bindung mit Objekt viel einfacher ist.

ng-options="o.value as o.name for o in maxSelectOptions"

Das Ergebnis in ng-model sollte nun 0 oder 1 anstelle eines Objekts sein.

Verwandte Themen