【问题标题】:Why is setting a checkbox's false value to 'undefined' causing ng-invalid to get added为什么将复选框的错误值设置为“未定义”导致添加 ng-invalid
【发布时间】:2015-08-28 05:12:58
【问题描述】:

我有一个 Angular 复选框,它的错误值为 undefined,尽管它不是 required,但由于 ng-invalid 作为一个类添加到取消选中的输入。

为什么会这样?

这是一个你可以搞砸的笨蛋: http://plnkr.co/edit/mFVcW1pI4wxf5lzRWoZE?p=preview

请注意第二个复选框的错误值为“未定义”。

<input type="checkbox" ng-model="checkboxModel.value" ng-true-value="'hi'" ng-false-value="undefined" class="ng-pristine ng-untouched ng-valid">

变成

<input type="checkbox" ng-model="checkboxModel.value" ng-true-value="'hi'" ng-false-value="undefined" class="ng-dirty ng-invalid ng-invalid-parse ng-touched">

未选中时,即使 requiredng-required 都不存在

【问题讨论】:

  • 请在问题中贴出相关代码。
  • 我相信你需要用单引号括起来。像这样 ng-false-value="'undefined'" " 'all things here' "
  • 我有一个答案,使用 ng-model-options="{ allowInvalid: true }"... 但它实际上并没有像我想象的那样工作,所以我删除了那个答案。无论如何,您遇到的问题是parse 错误。每当 $parser 返回 undefined 时,这就是 parse 错误。因此,您可以使用其他值(如 null)或找出 allowInvalid: true 不起作用的原因。
  • 添加了问题的代码。 @Yeysides 我希望该值未定义,而不是显示“未定义”的字符串。
  • @HankScorpio 您可以将其发布为答案,我会接受。我可以用 null 代替。

标签: javascript angularjs checkbox


【解决方案1】:

每当 $parser 返回undefined 时,都被视为解析错误。您可以改用其他值(如 null)。

ngModelOptions.allowInvalid 应该允许 undefined 工作......但我对其进行了测试,它仍然存在验证错误。 *耸耸肩*

【讨论】:

    猜你喜欢
    • 2017-10-16
    • 2013-06-11
    • 1970-01-01
    • 2020-03-28
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多