2

ngPattern 지시문을 사용할 때 ngModel이 정의되지 않았습니다. ngPattern을 제거하면 ngModel이 예상대로 작동합니다. plnkr을 참조하십시오.지시어 사용시 ngModel 정의되지 않음 - Angularjs 컨트롤러

텍스트 상자에 값을 입력 할 때 vm.condition이 표시되지 않지만 ngPattern이 제거 되 자마자 vm.condition이 예상대로 표시됩니다.

HTML

<body ng-controller="MainCtrl as vm"> 
    <div ng-form="vm.frmTest"> 
     <input id="txtHealth" name="txtHealth" type="text" ng-model="vm.condition" ng-pattern="/^(.+)$/g"> 
     <div class="help-block" ng-messages="vm.frmTest.txtHealth.$error" ng-show="vm.frmTest.txtHealth.$invalid"> 
     <p ng-message="pattern">Error.</p> 
     </div> 
    </div> 
    <span>{{vm.condition}}</span> 
</body> 

JS

app.controller('MainCtrl', function($scope) { 
    this.condition = ''; 
}); 

참고 :이 문제를 보여주는 아래 무식 버전입니다. 내 지시문에 같은 문제가 있습니다.

+0

이 경우에는 '패턴'만 사용해야합니다. – Icycool

+0

내 대답이 도움이됩니까 ?? –

답변

1

지시문에서 사용하고있는 패턴 문자열 때문일 가능성이 큽니다. $scope 바인드를 시도하고 지침을 확인하십시오.

Demo Example

HTML :

<!DOCTYPE html> 
<html ng-app="plunker"> 

    <head> 
    <link rel="stylesheet" href="style.css"> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular-messages.js"></script> 
     <script src="script.js"></script> 
    </head> 

    <body ng-controller="MainCtrl as vm"> 
    <div ng-form="vm.frmTest"> 
     <input id="txtHealth" name="txtHealth" type="text" ng-model="vm.condition" ng-pattern="re"> 
     <div class="help-block" ng-messages="vm.frmTest.txtHealth.$error" ng-show="vm.frmTest.txtHealth.$invalid"> 
     <p ng-message="pattern">Error.</p> 
     </div> 
    </div> 
    <span>{{vm.condition}}</span> 
    </body> 

</html> 

JS : 당신이 VM을 사용하려고하는 경우

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

app.controller('MainCtrl', function($scope) { 
    this.condition = ''; 
    $scope.re = /^(.+)$/g; 
}); 
0

현재 상대적 PLUNKER 예를 확인하실 수 있습니다 보기에 다음 d 필요합니다 컨트롤러에 eclare VM을 설치하십시오.

var vm = this;