我只是想知道为什么我必须在表单中指定两个name
和ng-model
输入元素才能正确使用它.例如,具有以下内容:
<form name='test'>
<div>
<input type='radio'
value='create-new'
ng-model='toggle'
required />
<input type='radio'
value='use-existing'
ng-model='toggle'
required />
</div>
<div ng-switch='test.$invalid'>
<div ng-switch-when='true'>Invalid!</div>
<div ng-switch-when='false'>Valid!</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
Invalid!
当我没有选择单选按钮时,我会得到输出- 这是正确的行为.但是,缺点是我可以访问此模型的唯一方法是$scope.toggle
- 元素本身不会通过$scope.test
(表单容器)中的名称进行引用.$scope.test
将包含验证规则toggle
,但它不会让您知道那些验证规则属于toggle
名称不存在.
如果我们要切换它,请在输入上放置一个name属性:
<form name='test'>
<div>
<input type='radio'
value='create-new'
name='toggle'
required />
<input type='radio'
value='use-existing'
name='toggle'
required />
</div>
<div ng-switch='test.$invalid'>
<div ng-switch-when='true'>Invalid!</div>
<div ng-switch-when='false'>Valid!</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
然后我们ng-switch
在底部将始终显示有效,即使我已经提到输入本身是必需的.另外,toggle
现在显示在里面$scope.test
,所以我可以检查$scope.test.toggle
其他地方的有效性(不需要该元素的内联属性).
如果我结合这两种方法,并同时使用name
和ng-model
,那么这两个结果合并,我得到的结果,我本来期望-我可以看到$scope.test.toggle
和模型本身是正确验证.
我的问题是为什么这是适当的行为?这似乎不同,比方说,jquery.validate.unobtrusive
其中的name
属性是本质上捆绑验证规则的元素中的位.
bto*_*rdz 17
name
attribute用于角度验证,ng-model
用于绑定,
如果您不打算使用角度验证,则不必使用 name
如果你没有约束力,那么就不要使用 ng-model
如果您需要在客户端验证角度和需要绑定,则两者都是必需的
归档时间: |
|
查看次数: |
2888 次 |
最近记录: |