2013-07-17 16 views
38

Mam następujący widok z dwóch wejściowych przycisków radiowych:Jak przypisać wartość logiczną modelować

<label> 
    <input type="radio" name="test" ng-model="fooBar" 
     value="true" ng-change="logConsole()"> 
    True 
</label> 

<label> 
    <input type="radio" name="test" ng-model="fooBar" 
     value="false" ng-change="logConsole()"> 
    False 
</label> 

A mój kontroler wygląda następująco:

//Initialization 
$scope.fooBar = false; 

$scope.logConsole = function() { 
    console.log("Value is : " + $scope.fooBar); 
    console.log("Type is : " + typeof $scope.fooBar); //Always displays 'string' 
}; 

Moim problemem jest to, że gdy użytkownik wybierze albo z przycisków opcji, typ modelu fooBar jest zawsze ciągiem, czyli wartością jest ciąg "prawda" lub ciąg "fałsz" - chcę, aby typ był wartością logiczną prawdziwą lub błędną wartością logiczną. Jak mogę zapisać wartość boolowską (z poziomu widoku) na modelu?

EDYCJA: Właśnie wypróbowałem to i to wciąż nie działa. Dla atrybutu value zdałem funkcję, która wróci logiczną true lub false, coś takiego:

<input type="text" value="{{getBoolean('true')}}....> 

$ scope.getBoolean = function (value) { if (value === 'true') return prawdziwe; else return false; };

Nadal prowadzi String gdy są wybrane przyciski radiowe ...

+0

spróbuj wyjąć atrybut wartości. Niech kątowe wiążą się z bieżącą wartością fooBar. –

+0

@DavinTryon Nie, nie działa. Model otrzymuje wartość 'undefined'. – callmekatootie

+0

dlaczego po prostu nie użyjemy wartości = true –

Odpowiedz

64

Jeden z komentarzy w the documentation mówi:

Podczas ng wartość nie jest udokumentowane, że jest to przydatne dyrektywa , szczególnie gdy wiążemy wartość boolowską.

<input ng-model="foo" type="radio" value="true"> 

może nie działać, ale

<input ng-model="foo" ng-value="true" type="radio"> 

robi.

+0

Awesome! Jeszcze nie słyszałem o tej dyrektywie ... I wydaje mi się, że nie widzę dyskusji na temat tej dokumentacji ... – callmekatootie

+2

Szkoda. Prawdopodobnie muszą być zablokowane przez zaporę sieciową twojej firmy. Powinieneś poprosić o ich odblokowanie, ponieważ wiele cennych rzeczy można znaleźć w komentarzach. –

Powiązane problemy