2015-10-06 3 views
0

Можно ли заставить ng-minlength быть условным значением? Например, я хочу пользователю либо ввести их надлежащее среднее имя или вообще ничего:Угловой текст ng-minlength, когда НЕ пуст?

<input type="text" id="middleName" name="middleName" 
     ng-model="info.middleName" 
     ng-minlength="info.middleName ? 2 : 0"> 

Синтаксис выше не работает. Бросается ошибка «бесконечного цикла».

ответ

1

ng-minlength принимает только статические значения. Если вы ищете собственное решение, попробуйте создать свою собственную директиву, используя $observe. Поэтому, чтобы ответить на ваш вопрос, нет, невозможно сделать ng-minlength условным значением.

2

Попробуйте это:

<input type="text" id="middleName" name="middleName" 
    ng-model="info.middleName" 
    ng-pattern="/^(?:.{2,})$/"> 

Это использует регулярное выражение, чтобы сделать то же самое. Минимальная длина составляет 2. После запятой максимальная длина (бесконечная, так как нет ничего).

+0

Это будет чистейшая solution..but, если есть подтверждение, то он должен изменить в 'form.middleName $ invalid' + 1 –

+0

Более конкретным будет form.middleName. $ Error.pattern –

0

Попробуйте что-нибудь подобное. Это также более читаемым

<input type="text" id="middleName" name="middleName" 
    ng-model="info.middleName" 
    ng-minlength="getMinLength(info.middleName)"> 

В файла JavaScript:.

$scope.getMinLength = function getMinLength(dataModel) { 
    //whatever your model is... 
    return dataModel ? 2 : 0; 
} 
Смежные вопросы