2013-05-14 14 views
5

Mam select:Jak rekursywnie zapobiegać wiązaniu AngularJS?

<select ng-model="p.value" ng-options="q for q in p.value"> 
<option value="">Select an animation</option> 
</select> 

Gdzie p.value jest ['AAAAA', 'BBBBB', 'CCCCC'] ale gdy wybiorę opcję SELECT aktualizacji i pokazuje nową masę opcji, takich jak:

<option>A</option> 
<option>A</option> 
<option>A</option> 
<option>A</option> 
<option>A</option> 

Mam oczywiście skonstruowany rzeczy niewłaściwych za pomocą tej samej wartości w modelu i opcjach. Jaki jest właściwy sposób robienia rzeczy?

Odpowiedz

4

Trzeba oddzielić tablicy elementów i model

<div ng-app ng-controller="MyCtrl"> 
    <select ng-model="p.selected" ng-options="q for q in p.value"> 
     <option value="">Select an animation</option> 
    </select> 
    {{p.selected}} 
</div> 


function MyCtrl($scope) { 

    $scope.p = { 
     value: ['AAAAA', 'BBBBB', 'CCCCC'], 
     selected : null 
    }; 
} 

Co się dzieje w Twoim przykładem jest jak najszybciej wybrać AAAAAp.value teraz odwołuje się do listy znaków a ponieważ ng-options jest związany z tą samą właściwością $scope, rozwijana lista aktualizuje się i generuje wynik, który widzisz.

Example on jsfiddle