2016-11-18 129 views
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

沒有我的回答可以幫助您需要使用只是'pattern'? –

回答

1

這可能是因爲您在指令中使用的模式字符串。嘗試使用$scope綁定並檢查您的指令。您可查詢相關PLUNKER例如這裏:

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:

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

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

如果你要使用VM在視圖上,那麼你將需要d你的控制器上的eclare vm。

var vm = this; 
相關問題