gpt4 book ai didi

javascript - AngularJS - 无法在动态输入上访问 $valid

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:51 24 4
gpt4 key购买 nike

更新:我添加了自定义指令,允许我使用动态生成的名称访问输入,但 $valid 仍未定义。

我是 Angular 的新手(试图从 jQuery 切换),我发现它非常棒,但是我已经为此纠结了几个小时,无法弄清楚是什么导致了这个问题。

我试图实现的 UI 工作流程是让用户点击一个步骤,然后显示一个输入字段,他必须填写该字段(需要验证,所以我正在尝试使用 ng -必需/ng-最小长度)。

如果它通过了验证,它应该显示一个勾号图标并激活以相同方式工作的下一步。


现在的问题是我可以访问表单元素,但我得到的对象是一个 DOM 对象,它不包含 $valid 属性,我需要它来检查表单/字段是否有效。

17:20 行是:

console.log($scope.step1); //undefined
console.log(step1); //dom object
console.log(step1.value); //dom object
console.log(step1.value.$valid); //undefined

我一直在谷歌上搜索很多关于 SO 的问题说我应该能够通过 $scope 变量访问表单,但不幸的是我不能,尽管它可以通过一个简单的变量名“step1”访问(动态生成的表单名称)。我也可以访问“值”命名字段,但它仍然只是一个 DOM 对象,所以没有 $valid 可用。

JSFiddle:http://jsfiddle.net/Iber/vtvnquee/


我的问题是:

  • 我的 Angular 编码风格是否正确?
  • 我的“向导应用程序”代码是否合乎逻辑?我的意思是,也许我应该使用不同的方法来构建这些步骤?
  • 我哪里做错了,为什么我不能访问 $valid 属性?

真的很想了解 Angular,因为它似乎是适合大型应用程序的合适框架,也是适合我的方式。

最佳答案

angular 中的表单验证依赖于两件事:

  1. 您的表单(或 ng-form)元素必须具有“名称”属性。

    <form name="myform">
  2. 您的输入(或选择)字段必须具有“名称”属性和 ng-model。

    <input type="text" name="name" ng-model="name" />

您的表单和输入字段需要 name 属性的原因是因为这是您在 $scope 上找到模型并执行客户端验证的方式。

例如

 $scope.myform.name.$error.required
$scope.myform.name.$valid
$scope.myform.name.$invalid

[编辑]

我看到您已经在您的 fiddle 中遵循了这些准则。

它不起作用的原因是因为 name 属性不能是一个内插值。

关于javascript - AngularJS - 无法在动态输入上访问 $valid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com