2

具体来说:我有两个单选按钮,它们的 ng-model 值必须是布尔值。由于这对于普通的 html 值属性是不可能的,我发现有用的 Angularjs ng-value。Problem is when I want to do some validation, when radio button ng-value="false" is selected it recognizes it as an empty ng-model and we have validation error.

示例http ://plnkr.co/edit/lvdNHZoSSN1nM6uLyc0Q?p=preview

任何线索如何解决这个问题?

4

3 回答 3

3

这是一个错误。

value="true/false"将不起作用,因为您的无线电输入在加载模型时不会被初始化和正确检查,但ng-value="true/false"不会起作用,因为“错误”选择会导致表单无效。

我遇到了同样的问题并将其报告为问题,但由于不知道何时会解决,我也想出了一个解决方法:ng-boolean-radio

它基本上将模型的布尔真/假值转换为字符串“真”/“假”值,与表单的字符串value="true/false"属性相匹配。这将允许在模型加载时默认检查相应的无线电输入。它还允许您保存“假”值,因为"false" != false.

最后,它通过将字符串“true”/“false”值转换回布尔值 true/false 来保留布尔数据类型,然后再将它们保存到模型中。

我希望这会有所帮助!

于 2013-05-07T03:48:52.567 回答
2

http://plnkr.co/edit/Y5vDuTug0kvS3Ut58Lz9?p=preview

问题出在required属性上。

我相信使用ng-required="!user.gender"是你正在寻找的。

编辑:似乎ng-required,虽然稍微好一点,但仍然不能完全工作。

我的建议是完全省略require并使用默认值初始化您的模型:

{gender: true}false也可以)。

于 2013-04-16T23:42:17.970 回答
0

我也有这个问题。Michael Moussa 的指令非常适合调试复选框/单选按钮的实际modelValue情况。事实证明,a到达modelValue了复选框/单选按钮。更新(从 1.2.0)到angular 1.2.5为我解决了这个问题。falseundefined

于 2013-12-20T14:06:50.973 回答