40

我有以下带有两个输入单选按钮的视图:

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

我的控制器看起来像:

//Initialization
$scope.fooBar = false;

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

我的问题是,当用户选择任一单选按钮时,fooBar模型的类型始终是字符串,即值是字符串“真”或字符串“假” - 我希望类型是布尔值真值或布尔假值。如何将布尔值(从视图中)存储到模型中?

编辑:我刚刚尝试过,它仍然无法正常工作。对于value属性,我传递了一个返回布尔值 true 或 false 的函数,如下所示:

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

$scope.getBoolean = function (value) { if (value === 'true') return true; 否则返回假;};

选择无线电按钮时,它仍然会导致字符串...

4

1 回答 1

64

文档中的一条评论说:

虽然 ng-value 没有记录,但它是一个有用的指令,特别是当您绑定到布尔值时。

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

可能不起作用,但

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

做。

于 2013-07-17T14:12:53.890 回答