2013-08-10 11 views
6

Mam pozycje na liście przycisków radiowych (przy użyciu ng-repeat) z button (początkowo wyłączone z ng-disabled), aby kontynuować. Po wybraniu przycisku radiowego chcę włączyć przycisk "Kontynuuj".Przycisk włączania/wyłączania oparty na wyborze przycisku radiowego w AngularJS

Co jest właściwym sposobem na zrobienie tego w Angular?

Istotne JS:

$scope.companies = [{ 
     "id": 3, 
     "name": "Twitter" 
    }, { 
     "id": 2, 
     "name": "Google" 
    }, { 
     "id": 1, 
     "name": "Apple" 
    }] 

Stosowna HTML:

<table> 
    <tr ng-repeat="company in companies"> 
    <td> 
     <input type="radio" ng-model="companyId" name="companyId" value="{{company.id}}" />{{company.name}} 
     </td> 
    </tr> 
</table> 

<button ng-disabled="!companyId">Continue</button> 

Jsfiddle

dzięki!

Odpowiedz

15

ngRepeat tworzy nowy zakres, który jest podrzędnym zakresem zakresu używanym przez przycisk. Można to naprawić za pomocą

<input type="radio" ng-model="$parent.companyId" .../> 

Zobacz http://jsfiddle.net/UZkM8/1/

Jednak lepszym rozwiązaniem byłoby, aby zaktualizować obiekt, który jest już w zakresie:

$scope.userChoice = {}; 

<input type="radio" ng-model="userChoice.companyId" .../> 

<button ng-disabled="!userChoice.companyId">Continue</button> 

Zobacz http://jsfiddle.net/UZkM8/3/

+1

to działa doskonale. Nie zdawałem sobie sprawy, że powtórzenie ng stworzyło nowy zakres. Dzięki JB! – jetcom

Powiązane problemy