我刚注意到如果我在表单名称属性或输入的名称属性中有连字符,则AngularJS验证不起作用。
如果我尝试验证字段
,这不起作用<form name="signup-form">
</form>
以下作品完美无缺
<form name="signupform">
</form>
有人可以解释为什么AngularJs在第一种情况下不起作用吗?如果我们要“ - ”工作,我们怎么能这样做?
答案 0 :(得分:4)
问题在于,您放入name
属性的名称也是在scope
上发布表单的JavaScript属性的名称(例如,在控制器中使用它)。但是包含连字符的属性名称不是有效的JavaScript。我很确定没有办法解决它。
答案 1 :(得分:0)
可以这样做......当在控制器中引用表单时,您可以使用数组表示法来执行此操作。 e.g。
$scope['my-form']['my-input'];
在模板中绑定时,您也可以使用数组表示法,如下所示:
<div ng-if="this['my-form']['my-input'].$invalid">There is an error</div>