'…'지시문에 필요한 컨트롤러 'ngModel'을 찾을 수 없습니다.


88

여기서 무슨 일이 일어나고 있습니까?

내 지시는 다음과 같습니다.

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

답변:


127

여기에 설명 된대로 : Angular NgModelController , <input필요한 컨트롤러를 제공해야합니다.ngModel

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

1
완전한. 알겠습니다! 대답으로 표시하겠습니다. 후속 질문이 있습니다. 다른 질문을 게시하거나 원본을 변경해야합니까?
Shaun Luttin 2014


2
실수로 입력했는데이 ng-models오류가 발생했습니다.
chovy

@Radim Kohler 귀하의 답변이 실제로 도움이 필요한 사람에게 도움이되어 기쁩니다. 위의 입력 문에서 "ng-model"속성에 대해 "{{RootObjectName +". "+ ModelName}}"?? !! 같은 문자열 연결을 사용할 수 있습니다. $ scope의 내 모델은 간단하지 않고 DB의 입력을 기반으로 컨트롤러에서 동적으로 생성되기 때문에
pavan kumar

@pavankumar이 링크를 확인 next.plnkr.co/edit/...ng-model="RootObject[alias]"세션을 사용할 경우에 작동합니다`$ scope.RootObject = {}; $ scope.alias = "FIRSTNAME" '... 별명의 instaead, 심지어 대해 forEach는 동적 이름을 제공 할 수
Radim 쾰러

8

이 문제에 대한 한 가지 가능한 해결책 ng-model은 해당 지시문을 사용하려면 속성이 필요하다는 것입니다.

따라서 'ng-model'속성을 추가하면 문제를 해결할 수 있습니다.

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

이것은 내 문제를 해결했습니다. 감사. ng-change를 트리거하려면 요소에 ng-model 바인딩이 있어야한다는 점을 놓친 것 같습니다.
antonD

1

줄을 제거 할 수도 있습니다.

  require: 'ngModel',

ngModel이 지시문에 필요하지 않은 경우 . 제거 ngModel하면 해당 ngModel오류 없이 지시문을 만들 수 있습니다 .


0

같은 오류가 발생했습니다. 제 경우에는 "ng-moel"과 같은 ng-model 지시문의 철자를 잘못 입력했습니다.

잘못된 것 : ng-moel = "user.name" 오른쪽 : ng-model = "user.name"

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.