【问题标题】:How to assign Boolean value to model如何将布尔值分配给模型
【发布时间】:2013-07-16 03:12:28
【问题描述】:

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

<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 = 函数(值){ if (value === 'true') 返回真; 否则返回假; };

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

【问题讨论】:

  • 尝试取出value属性。让 angular 绑定在 fooBar 的当前值中。
  • @DavinTryon 不,不起作用。该模型获得一个undefined 值。
  • 你为什么不直接使用 value=true
  • @Ajaybeniwal 仍然返回 String true 而不是 Boolean true...

标签: angularjs


【解决方案1】:

the documentation 中的一位 cmets 说:

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

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

可能不行,但是

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

会。

【讨论】:

  • 太棒了!以前没听说过这个指令...而且我似乎看不到该文档的讨论...
  • 太糟糕了。它们可能必须被您公司的防火墙阻止。您应该要求取消阻止它们,因为在 cmets 中可以找到许多有价值的东西。
猜你喜欢
  • 2020-01-10
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 2019-10-25
  • 2019-11-04
  • 1970-01-01
相关资源
最近更新 更多