2014-10-11 3 views
0

У меня есть следующие в входе и она отлично работаетнг-модель динамического объекта недвижимости

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

Я также получаю один и тот же шаблон с помощью объекта JSON под validation.decfield, но если я сделаю это.

ng-pattern="validation.decField"> 

Это не работает ... Я видел другие примеры людей, которые это делают ... Почему это не работает? Я использую угловой 1.3.

Тип данных validation.decField, исходящий от json, является строкой. Я попробовал несколько способов конвертировать его, чтобы его можно было понять Angular. Нет ошибки, он просто не ограничивает поле, как обычный шаблон в поле.

+0

не работает в виду? любая ошибка? Каков тип данных 'validation.decField'? –

+0

Регулярное выражение не должно находиться в кавычках в контроллере. Можете ли вы показать, как вы определяете 'validation.decField'? –

+0

Значение находится в JSON ... Он возвращается как jsonPattern: "/^\d{0,9}(\.\d{1,3})?$/" – chrislhardin

ответ

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>