2016-03-18 17 views
8

Ciao Sviluppo un'app utilizzando angularjs (1.5.0) seguendo le regole di jonhpapa. Anche io uso materiale angolare 1.0.6.Controller 'ngMessages', richiesto dalla direttiva 'ngMessage', non può essere trovato

Ho un problema quando aggiungo il modulo 'ngMessages'.

Ho installato il lib angular-messages 1.5.1.

Quando aggiungo il modulo da utilizzare, ho il seguente errore sulla console.

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"> 

Questa vista in questo momento non ha controller. La vista contiene:

  <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> 

Grazie in anticipo, saluti.

+2

assicurarsi che il file js angolari-messaggi è incluso nel tuo html. – Iansen

+0

@lansen È generato da gulp, e io vedo icluded nell'HTML. – Arturo

+0

non è possibile utilizzare la direttiva se non si dispone di un controller. Il messaggio è molto chiaro: 'Controller 'ngMessages', richiesto dalla direttiva 'ngMessage''. Aggiungi al tag del corpo: 'ng-controller =" ngMessages "' – dpaul1994

risposta

5

per risolvere il problema sostituire la seguente:

ng-messaggio da NG-messaggi

Si tratta di un errore di battitura.

3

Il tuo ng-messages deve contenere il nome del modulo e quindi il nome del campo di immissione.

Quindi: formName.fieldName.$error

Poi i ng-message necessità di contenere la regola di convalida (come si deve).

Se non si dispone di un modulo che circonda il telefono md-input-container, è necessario aggiungerne uno.

Il nome del modulo può essere quello che vuoi.

Qualcosa di simile a questo:

<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> 
Problemi correlati