2013-11-27 6 views
5

Bitte beachten Sie folgendes Beispiel:ng-Modelländerungen des Typs in Optionsfeld

JSFiddle Sample



    <div ng-controller="myCtrl"> 
    var ng-model = {{myValue}} - {{myType}} 

     <input type="radio" value="true" 
    name="boolean" ng-change="logIt()" ng-model="myValue" /> True 
     <input type="radio" value="false" 
    name="boolean" ng-change="logIt()" ng-model="myValue" /> False 

    </div> 
    var myApp = angular.module('myApp',[]); 

    function myCtrl($scope) 
    {  
     $scope.myValue = true; //does not work 
     //$scope.myValue = 'true'; //it does work 
     $scope.myType =(typeof $scope.myValue);  
     $scope.logIt=function(){ 
      $scope.myType =(typeof $scope.myValue); 
     } 
    } 

Wie Sie zunächst typeof sind vom Typ boolean sehen können, aber nach Wert ändert bespannen auswählen und Wahr ist nicht gleich "wahr". Gibt es irgendeine Möglichkeit, den originalen Typ winkelstabil zu halten.

An diesem Punkt erwäge ich, meine eigene Direktive zu schreiben, um dieses Verhalten zu steuern, aber es sieht nicht richtig aus, dass Winkel den ursprünglichen Typ ändert, bin ich richtig ?.

Antwort

17

Verwenden ng-value und Winkel wird Griff zurück zu boolean Umwandlung:

Hier die updated jsfiddle ist.

und obligatorischer Code:

<div ng-controller="myCtrl"> 
    <h1>Sample 1- Booleans</h1> 

var ng-model = {{myValue}} - {{myType}} 
    <br /> 
    <input type="radio" ng-value="true" name="boolean" ng-change="logIt()" ng-model="myValue" /> True 
    <input type="radio" ng-value="false" name="boolean" ng-change="logIt()" ng-model="myValue" /> False 
</div> 
+0

Interessante mir die Dokumentation für das Optionsfeld geprüft und fand nicht den ng-Wert http://code.angularjs.org/1.0.8/docs/api/ng .directive: eingang.radio. Danke für die schnelle Antwort. – Dalorzo