【问题标题】:ng-model changes of type in radio buttonng-model 更改单选按钮中的类型
【发布时间】:2013-12-13 11:17:36
【问题描述】:

请注意这个例子:

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);
        }
    }

如您所见,typeof 最初是布尔类型,但在选择一个值后它会变为字符串,并且 true 不等于 'true'。有什么办法可以让角度保留原始类型。

此时我正在考虑编写自己的指令来控制这种行为,但 angular 更改原始类型看起来不正确,对吗?。

【问题讨论】:

    标签: javascript angularjs angularjs-directive radio


    【解决方案1】:

    使用 ng-value 和 angular 将处理转换回布尔值:

    这里是updated jsfiddle

    以及必填代码:

    <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>
    

    【讨论】:

    猜你喜欢
    • 2016-01-30
    • 2014-07-12
    • 1970-01-01
    • 2017-03-16
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多