更新:我添加了一个自定义指令,允许我使用动态生成的名称访问输入,但$ valid仍未定义。
我对Angular很新(尝试从jQuery切换)我发现它非常棒,但是我已经把头发拉了好几个小时并且无法弄清楚&# 39;导致问题。
我尝试实现的用户界面的工作流程是让用户点击一个步骤,然后显示一个输入字段,他必须填写该字段(需要进行验证,因此我需要这样做试图使用ng-required / ng-minlength)。
如果它通过了验证,它应该显示一个勾号图标并激活下一步,它的工作方式相同。
现在的问题是我可以访问表单元素,但我得到的对象是一个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,因为它看起来像是一个适合大型应用程序的框架以及适合我的方式。
答案 0 :(得分:6)
角度形式验证依赖于两件事:
您的表单(或ng-form)元素必须具有“name”属性。
<form name="myform">
您的输入(或选择)字段必须具有“名称”属性和ng模型。
<input type="text" name="name" ng-model="name" />
表单和输入字段需要name属性的原因是因为您可以在$ scope上找到模型并执行客户端验证。
例如
$scope.myform.name.$error.required
$scope.myform.name.$valid
$scope.myform.name.$invalid
[编辑]
我看到你已经在你的小提琴中遵循了这些指导原则。
它不起作用的原因是因为name属性不能是插值。