如何为模型分配布尔值

cal*_*tie 40 angularjs

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

<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>
Run Code Online (Sandbox Code Playgroud)

我的控制器看起来像:

//Initialization
$scope.fooBar = false;

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

我的问题是,当用户选择任何一个单选按钮时,fooBar模型的类型总是一个String,即值是字符串'true'或字符串'false' - 我希望该类型是一个布尔值true值或布尔值false.如何将布尔值(从视图中)存储到模型中?

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

<input type="text" value="{{getBoolean('true')}}....>
Run Code Online (Sandbox Code Playgroud)

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

当选择单选按钮时,它仍然会产生一个字符串...

JB *_*zet 65

文档一条评论说:

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

<input ng-model="foo" type="radio" value="true"> 
Run Code Online (Sandbox Code Playgroud)

可能不会工作但是

<input ng-model="foo" ng-value="true" type="radio"> 
Run Code Online (Sandbox Code Playgroud)

确实.

  • 太糟糕了.它们必须被公司防火墙阻止.您应该要求取消阻止它们,因为在评论中可以找到许多有价值的东西. (2认同)