由于某些原因,当名称中有[]时,我无法获取表单元素。例如,当我尝试以下
时 <input class="form-control col-md-1" type="text" name="first_name" id="user_signup_last_name" placeholder="First name" ng-model="user.first_name" required >
<span style="color:red" ng-show="myForm.last.$dirty && myForm.first_name.$invalid">
<span class="col-md-1" ng-show="myForm.first_name.$error.required">First name required.</span>
但是当我尝试更改名称以使[]验证停止工作时。
<input class="form-control col-md-1" type="text" name="user[first_name]" id="first_name" placeholder="First name" ng-model="user.first_name" required>
<span style="color:red" ng-show="myForm.user[first_name].$dirty && myForm.user[first_name].$invalid">
<span class="col-md-1" ng-show="myForm.user[first_name].$error.required">First name required.</span>
答案 0 :(得分:0)
您可以{{formName['user[first_name]'].$error}}
答案 1 :(得分:0)
今天遇到了这个问题以及&#34;逃避解决方案&#34;没有为我工作。
从本质上讲,rails的表单提交与[]
一起使用,但ng-messages指令并不适合这一点。
我创建了一个指令,该指令使用伪名称属性来处理表单内容,为rails嵌套属性语法保留name属性(在CoffeeScript中)
angular.module 'myModule'
.directive 'fieldName', ->
directive =
restrict: 'A'
require: ['ngModel', '^form']
scope:
fieldName: '@fieldName'
link: (scope, elem, attrs, controllers) ->
modelCtrl = controllers[0]
formCtrl = controllers[1]
formCtrl[scope.fieldName] = modelCtrl
return
要使用此指令,我使用以下(以haml为单位)
%label My label
%input(ng-model='user_account.email' name='user_account[email]' required field-name='email' required type='email')
%div(ng-messages='form.email.$error')
%span(ng-message='required') Required