具有这个普通(名称属性由服务器请求)形式与角度,并不能弄清楚如何使验证工作.我应该把什么投入到ng-show ="TODO"中
<div ng-app>
<form ng-init="variants = [{duration:10, price:100}, {duration:30, price:200}]">
<div ng-repeat="variant in variants" ng-form="variant_form">
<div>
<label>Duration:</label>
<input name="variants[{{$index}}][duration]" ng-model="variant.duration" required />
<span ng-show="TODO">Duration required</span>
</div>
<div>
<label>Price:</label>
<input name="variants[{{$index}}][price]" ng-model="variant.price" />
<span ng-show="TODO">Price required</span>
</div>
</div>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
ps:这只是一种形式,更复杂
谢谢
Nic*_*RIC 11
AngularJS依赖输入名称来公开验证错误.
不幸的是,截至今天,不可能(不使用自定义指令)动态生成输入的名称.实际上,检查输入文档我们可以看到name属性只接受字符串.
简而言之,您应该依靠ng-form来验证动态创建的输入.就像是 :
<div ng-repeat="variant in variants" >
<ng-form name="innerForm">
<div>
<label>Duration:</label>
<input name="duration" ng-model="variant.duration" required />
<span ng-show="innerForm.duration.$error.required">Duration required</span>
</div>
<div>
<label>Price:</label>
<input name="price" ng-model="variant.price" required/>
<span ng-show="innerForm.price.$error.required">Price required</span>
</div>
</ng-form>
Run Code Online (Sandbox Code Playgroud)
在这里工作小提琴
更新:根据您的服务器端要求,为什么不做这样的事情:
<input type="hidden" name="variants[{{$index}}][duration]" ng-model="variant.duration"/>
<input name="duration" ng-model="variant.duration" required />
Run Code Online (Sandbox Code Playgroud)
隐藏的输入将是服务器读取的输入,而另一个将用于进行客户端验证(稍后由服务器丢弃).这是一种黑客,但应该工作.
PS:确保您的表单在实际提交之前有效.可以使用ng-submit完成
| 归档时间: |
|
| 查看次数: |
15846 次 |
| 最近记录: |