具体来说:我有两个单选按钮,其ng-model值必须是布尔值。由于使用普通的html值属性是不可能的,因此我找到了有用的Angularjs ng-value。问题是,当我想要进行一些验证时,当选择单选按钮ng-value =“false”时,它会将其识别为空ng模型,并且我们有验证错误。
示例:http://plnkr.co/edit/lvdNHZoSSN1nM6uLyc0Q?p=preview
如何解决这个问题?
答案 0 :(得分:3)
这是一个错误。
value="true/false"
无法正常工作,因为加载模型时无法正确初始化和检查您的无线电输入,但ng-value="true/false"
将无法正常工作,因为“错误”选择将导致表单无效。
我遇到了同样的问题并将其报告为一个问题,但由于无法确定何时解决,我还想出了一个解决方法:ng-boolean-radio
它基本上将模型的布尔值true / false值转换为字符串“true”/“false”值,这些值与表单的字符串value="true/false"
属性相匹配。这将允许在模型加载时默认检查相应的无线电输入。它还允许您保存“false”值,因为"false" != false
。
最后,它通过将字符串“true”/“false”值转换回布尔值true / false来保留boolean数据类型,然后将它们保存在模型中。
我希望有所帮助!
答案 1 :(得分:2)
http://plnkr.co/edit/Y5vDuTug0kvS3Ut58Lz9?p=preview
问题出在required
属性中。
我相信使用ng-required="!user.gender"
是您正在寻找的。 p>
编辑:似乎ng-required
虽然略好一些,但仍无法完全发挥作用。
我的建议是完全省略require
并使用默认值初始化您的模型:
{gender: true}
(false
也可以)。
答案 2 :(得分:0)
我也有这个问题。迈克尔穆萨的指令非常适合调试复选框的/单选按钮的实际modelValue
。事实证明,modelValue
false
undefined
到达{{1}}复选框/单选按钮。更新(从1.2.0)到角度1.2.5 为我解决了问题。