2014-02-25 26 views
0

以下线路的正确方法是什么?ng模式可以保持条件吗?

ng-pattern="(true)? apply-pattern : dont-apply-pattern" 

我的问题是,我躲在ng-pattern领域的不需要的时候,但还是它不允许的形式是有效的。

我试图禁用该字段,但没有运气。

的代码是:

<input type="text" ng-hide="param.paramType == 'java.lang.boolean'" 
     ng-pattern="param.paramValidatePattern" class="form-control input-sm" name="paramV" 
     ng-model="param.paramValue" ng-required="param.paramType != 'java.lang.boolean'" 
     ng-disabled="param.paramType == 'java.lang.boolean'" /> 
+0

尝试ng-if而不是ng-hide。如果条件为false,元素将从dom中删除,因此将从表单中删除。 –

+0

我标记了我的删除答案。我指的是最新的Angular文档(http://docs.angularjs.org/guide/expression),他们声明表达式不接受控制流程语句,但在用最新的分支进行测试后,似乎这不再是事实。 – package

+0

看来ng-if在使用的angularjs版本中不起作用。有没有其他选择。我正在使用(AngularJS v1.0.5) – shaik

回答

0

看看这个特殊的conditon将在您的版本为你工作...

<form name='myFormName'ng-submit="submitFormFunction()"> 
<input type="text" name="mySpecialPatternField" .../> 

在JS代码(指令||控制器)

$scope.submitFormFunction = function(){ 
    if(specialConditionIsMet){ 
     // then we don't want the pattern input to matter in form validation          
     $scope.myFormName.mySpecialPatternField.$setValidity('pattern', true); 
    } 
} 

可能需要是错误的,我不记得,但他们交换了你认为应该是的angularjs。

如果使用$ setValidity,如果你做的和具有大于一个验证 该输入(除了模式,说requierd为好),你将需要遍历 $scope.myFormName.mySpecialPatternField.$error

对象得到键,然后将它们中的每一个设置为true;这将为每个错误设置$valid为真,并且因此也将形式设置为$valid = true

但是,这可能会或可能不会在您的版本中可用。检查...

相关问题