2014-02-16 3 views
72

Что здесь происходит?Контроллер 'ngModel', что требуется по директиве '...', не найдено

Вот моя директива:

app.directive('submitRequired', function (objSvc) { 
    return { 
     require: 'ngModel', 
     link: function (scope, elm, attrs, ctrl) { 

      // do something 
     } 
    }; 
}); 

Вот пример директивы в использовании:

<input submit-required="true"></input> 

Вот фактический текст ошибки:

Error: [$compile:ctreq] Controller 'ngModel', required by directive 'submitRequired', can't be found! 
http://errors.angularjs.org/1.2.2/$compile/ctreq?p0=ngModel&p1=submitRequired 
    at http://www.domain.ca/Scripts/angular/angular.js:78:12 
    at getControllers (http://www.domain.ca/Scripts/angular/angular.js:5972:19) 
    at nodeLinkFn (http://www.domain.ca/Scripts/angular/angular.js:6139:35) 
    at compositeLinkFn (http://www.domain.ca/Scripts/angular/angular.js:5550:15) 
    at nodeLinkFn (http://www.domain.ca/Scripts/angular/angular.js:6132:24) 
    at compositeLinkFn (http://www.domain.ca/Scripts/angular/angular.js:5550:15) 
    at publicLinkFn (http://www.domain.ca/Scripts/angular/angular.js:5458:30) 
    at http://www.domain.ca/Scripts/angular/angular.js:1299:27 
    at Scope.$get.Scope.$eval (http://www.domain.ca/Scripts/angular/angular.js:11634:28) 
    at Scope.$get.Scope.$apply (http://www.domain.ca/Scripts/angular/angular.js:11734:23) <input submit-required="true"> angular.js:9159 
(anonymous function) angular.js:9159 
$get angular.js:6751 
nodeLinkFn angular.js:6141 
compositeLinkFn angular.js:5550 
nodeLinkFn angular.js:6132 
compositeLinkFn angular.js:5550 
publicLinkFn angular.js:5458 
(anonymous function) angular.js:1299 
$get.Scope.$eval angular.js:11634 
$get.Scope.$apply angular.js:11734 
(anonymous function) angular.js:1297 
invoke angular.js:3633 
doBootstrap angular.js:1295 
bootstrap angular.js:1309 
angularInit angular.js:1258 
(anonymous function) angular.js:20210 
trigger angular.js:2315 
(anonymous function) angular.js:2579 
forEach angular.js:300 
eventHandler angular.js:2578ar.js:7874 

ответ

113

Как описано здесь : Angular NgModelController, вы должны предоставить <input с требуемым контроллером ngModel

<input submit-required="true" ng-model="user.Name"></input> 
+1

Отлично. Я ценю это! Я отмечу это как ответ. У меня есть следующий вопрос. Должен ли я опубликовать другой вопрос или изменить свой оригинал? –

+0

Ниже приведено следующее: http://stackoverflow.com/questions/21807929/controller-ngmodel-required-by-directive-cant-be-found –

+2

Я ошибочно набрал 'ng-models' и получил эту ошибку. – chovy

5

Одним из возможных решений этой проблемы является ng-model атрибут должен использовать эту директиву.

Следовательно, добавление атрибута 'ng-model' позволяет решить проблему.

<input submit-required="true" ng-model="user.Name"></input> 
Смежные вопросы