Идентификатор выражения директивы AngularJs и шаблон ng не работают

Использование директивы ввода формы с ng-pattern. Он работает (т. е. отображается ошибка), когда идентификатор в директиве является строкой, но не работает (т. е. ошибка никогда не отображается), когда идентификатор является выражением. Псевдокод:

работает

<form name="myForm" role="form" ng-submit="customer.submit()">
  <form-input id="foo" ng-pattern="/^[0-9]+$/"></form-input>
</form>
<span ng-show="myForm.foo.$error.pattern" class="ng-hide">Not valid number!</span>

не работает (myVar = "foo")

<form name="myForm" role="form" ng-submit="customer.submit()">
  <form-input id="{{myVar}}" ng-pattern="/^[0-9]+$/"></form-input>
</form>
<span ng-show="myForm.foo.$error.pattern" class="ng-hide">Not valid number!</span>

Chrome Inspected HTML (точно так же, работает/не работает)

<input type="text" id="foo" name="foo" ng-pattern="/^[0-9]+$/" class="ng-valid ng-valid-pattern">
<span ng-show="myForm.foo.$error.pattern" class="ng-hide">Not valid number!</span>

Предположим, это связано с тем, что идентификатор выражения не определен, когда все подключено, но не знаю, как это исправить. Заранее спасибо!


person user1508460    schedule 16.01.2015    source источник


Ответы (1)


Вам нужна модель для проверки, а точнее директива ng-model. При добавлении ng-model все работает.

<form name="myForm" role="form" >
    <input name="foo" id="{{myVar}}" ng-pattern="/^[0-9]+$/" ng-model="modelVar" />
</form>

См. jsFiddle.

person MiTa    schedule 16.01.2015
comment
Привет, модель добавлена, но когда я изменяю myVar на 'foo' и использую name={{myVar}}, она перестает работать в jsFiddle. Спасибо. - person user1508460; 19.01.2015