2016-03-18 4 views
8

Hallo Ich entwickle eine App mit angularjs (1.5.0) nach jonhpapa Regeln. Auch ich verwende eckiges Material 1.0.6.Controller 'ngMessages', benötigt von Direktive 'ngMessage', kann nicht gefunden werden

Ich habe ein Problem, wenn ich das Modul 'ngMessages' hinzufügen.

Ich habe die lib angular-messages installiert 1.5.1.

Wenn ich das Modul zu verwenden, habe ich den folgenden Fehler auf der Konsole.

Error: [$compile:ctreq] Controller 'ngMessages', required by directive 'ngMessage', can't be found! 
http://errors.angularjs.org/1.5.0/$compile/ctreq?p0=ngMessages&p1=ngMessage 
    at http://localhost:3000/bower_components/angular/angular.js:68:12 
    at getControllers (http://localhost:3000/bower_components/angular/angular.js:8817:19) 
    at nodeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8982:33) 
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8226:13) 
    at nodeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8973:24) 
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8226:13) 
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8229:13) 
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8229:13) 
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8229:13) 
    at compositeLinkFn (http://localhost:3000/bower_components/angular/angular.js:8229:13) <div data-ui-view="" class="ng-scope"> 

Diese Ansicht hat in diesem Moment keinen Controller. Die Ansicht enthält:

  <md-input-container> 
      <label>First name</label> 
      <input name="firstName" 
       ng-model="vm.user.firstName" 
       md-maxlength="30" 
       required> 
       <div ng-messages="vm.user.firstName.$error"> 
       <div ng-message="md-maxlength">Field has to be less than 30 characters long.</div> 
       <div ng-message="required">Field required</div> 
       </div> 
      </md-input-container> 

Vielen Dank im Voraus, Grüße.

+2

sicherstellen, dass die Winkel-Nachrichten js Datei in Ihrem HTML enthalten ist. – Iansen

+0

@lansen Es wird von Schluck erzeugt, und ich sehe es im HTML. – Arturo

+0

Sie können die Direktive nicht verwenden, wenn Sie keinen Controller haben. Die Nachricht ist sehr klar: 'Controller 'ngMessages', benötigt von 'ngMessage'. Zum Body-Tag hinzufügen: 'ng-controller =" ngMessages "' – dpaul1994

Antwort

5

das Problem zu beheben, um die folgende ersetzen:

Es ist ein Tippfehler

ng-Nachricht von ng-Nachrichten.

3

Ihr ng-messages muss den Namen des Formulars und dann den Namen des Eingabefelds enthalten. So

: formName.fieldName.$error

Dann werden die ng-message Bedürfnisse der Gültigkeitsregel enthalten (wie Sie).

Wenn Sie kein Formular haben, das Ihre md-input-container umgibt, müssen Sie eins hinzufügen.

Der Formularname kann beliebig sein.

Etwas ähnliches wie folgt aus:

<form name="vm.details"> 

    <md-input-container> 
     <label>First name</label> 
     <input name="firstName" 
      ng-model="vm.user.firstName" 
      md-maxlength="30" 
      required> 
      <div ng-messages="vm.details.firstName.$error"> 
      <div ng-message="md-maxlength">Field has to be less than 30 characters long.</div> 
      <div ng-message="required">Field required</div> 
      </div> 
     </md-input-container> 

</form>