2014-05-23 5 views
5

Ich habe ein Muster auf meinem ControllerAngularjs ng-model-options funktioniert nicht.

$scope.pattern = { 
    name: /[a-zA-Z]{5,}/ 
} 

Auf der Ansicht

<input type="text" name="name" data-ng-model="name" ng-model-options="{ updateOn: 'blur' }" ng-pattern="pattern.name" required /> 
     <div ng-show="contactForm.name.$dirty && contactForm.name.$invalid"> 
     <span ng-show="contactForm.name.$error.required">The name field is mandatory</span> 
     <span ng-show="contactForm.name.$error.pattern">The name must be at least 5 characters long</span> 
     </div> 

ich das Feld nur validieren möchten, wenn es den Fokus verliert aber es bestätigt nicht jedes Mal, wenn ich drücken ein Knopf.

+1

Sie vergaß die Geige :) – gkalpak

+3

Verwenden Sie AngularJS 1.3.x? Es ist gerade noch in der Betaversion, aber dies wird nur in Version 1.3.x unterstützt. –

Antwort

17

ngModelOptions wurde nur in Schräg 1.3.x eingeführt

https://docs.angularjs.org/api/ng/directive/ngModelOptions

Wenn Sie eine ähnliche Funktionalität in Angular 1.2.x verwenden möchten, lesen Sie in diesem Poly Füllung:

https://github.com/fergaldoyle/modelOptions

+0

Schöne Antwort. Ich habe Angular 1.2.x benutzt und das Modul funktioniert einfach. – vipin

+0

Aktualisieren Sie einfach auf Angular 1.3, wenn Sie die Funktionen verwenden möchten, anstatt eine alte Version mit Polyfills zu verwenden. Der IE8-Support-Drop sollte kein Problem sein, wenn Sie vernünftige Clients haben ;-) –

+2

Was ist, wenn Sie eine massive Anwendung haben, die mit 1.2 entwickelt und getestet wurde, und Sie einfach eine Denunce zu einer Eingabe hinzufügen möchten. Anstatt die gesamte App zu aktualisieren/zu refaktorieren, um mit 1.3 zu arbeiten, könnten Sie ein solches Modul einfach einfügen. Oder für Unternehmensumgebungen, in denen IE8 weit verbreitet ist. Wenn Sie als Entwickler denken, können Sie IT-Abteilungen oder Ihren Kunden vorschreiben, welchen Browser sie verwenden sollten. Ich glaube nicht, dass Sie in der realen Welt leben. – Fergal