非空时的角度文本ng-minlength?

时间:2015-10-06 17:53:50

标签: javascript angularjs

是否可以强制ng-minlength为条件值?例如,我希望用户输入正确的中间名或者根本不输入任何内容:

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

上面的语法不起作用。抛出“无限循环”错误。

3 个答案:

答案 0 :(得分:2)

试试这个:

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

这使用正则表达式来做同样的事情。 2是最小长度。逗号之后是最大长度(无限,因为没有任何东西)。

答案 1 :(得分:1)

ng-minlength仅接受静态值。如果您正在寻找自定义解决方案,请尝试使用$observe创建自己的指令。因此,为了回答您的问题,不能强迫ng-minlength成为条件值。

答案 2 :(得分: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;
}