2014-10-11 104 views
0

我有一個輸入以下內容並能正常工作NG模式動態對象屬性

ng-pattern="/^\d{0,9}(\.\d{1,3})?$/"> 

我也得到下validation.decfield通過JSON對象相同的模式,但如果我這樣做。

ng-pattern="validation.decField"> 

這是行不通的......我見過其他人做這個例子......爲什麼它不工作?我正在使用角1.3。

來自json的validation.decField的數據類型是String。我嘗試了幾種轉換方法,以便Angular能夠理解它。沒有錯誤,它不會像田野中的簡單模式那樣限制場地。

+0

不起作用呢?有什麼錯誤? 'validation.decField'的數據類型是什麼? – 2014-10-11 20:17:27

+0

正則表達式不應該在控制器中引用。你能告訴你如何定義'validation.decField'嗎? – 2014-10-11 21:52:27

+0

值是在JSON中...它回來作爲jsonPattern:「/^\d{0,9}(\.\d{1,3})?$/」 – chrislhardin 2014-10-12 12:11:57

回答

1

如果確保在控制器中使用JavaScript正則表達式作爲類型(而不是引用的模式),那麼應該沒問題。

如果您收到的正則表達式作爲字符串(以JSON),您應該建立一個新的RegExp對象:

validation.decField = new RegEx('/^\d{0,9}(\.\d{1,3})?$/', 'i'); 

下面是代碼片段顯示一切工作(使用角1.2.23)。

請注意,示例中的decField設置爲/^\d{0,9}(\.\d{1,3})?$/,而不是'/^\d{0,9}(\.\d{1,3})?$/'

var app = angular.module('myApp', []); 
 

 

 
app.controller('Ctrl', function($scope) { 
 

 
    $scope.validation = { 
 
    
 
     decField: new RegExp('/^\d{0,9}(\.\d{1,3})?$/', 'i') 
 
    }; 
 

 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="myApp"> 
 
    
 
    <div ng-controller="Ctrl"> 
 

 
     <form name="frm"> 
 
     
 
     <label>Decimal:</label> 
 
     <input type="text" ng-model="myDecimal" ng-pattern="validation.decField"/> 
 
     
 
     </form> 
 
     
 
     {{ frm.$valid }} 
 
    
 
    </div> 
 
</div>