Идентификаторът на израза на директивата AngularJs и ng-моделът не работят

Използване на директива за въвеждане на формуляр с ng-шаблон. Работи (т.е. показва се грешка), когато идентификаторът на директивата е низ, но не работи (т.е. грешката никога не се показва), когато идентификаторът е израз. Псевдо код:

работи

<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 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