2014-02-25 53 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

但是,這可能會或可能不會在您的版本中可用。檢查...

相關問題