web-dev-qa-db-ja.com

ディレクティブ「...」で必要なコントローラー「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
84
Shaun Luttin

ここで説明されているように、 Angular NgModelController 、必要なコントローラーngModelを備えた<inputを提供する必要があります。

<input submit-required="true" ng-model="user.Name"></input>
124
Radim Köhler

この問題の解決策の1つは、そのディレクティブを使用するためにng-model属性が必要です。

したがって、「ng-model」属性を追加すると、問題を解決できます。

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

行を削除することもできます

  require: 'ngModel',

このディレクティブでngModelが必要ない場合。 ngModelを削除すると、thatngModelエラーなしでディレクティブを作成できます。

0
steampowered

私は同じエラーに直面しました。私の場合、ng-modelディレクティブのスペルが間違っていました。「ng-moel」のようなものです。

間違ったもの:ng-moel = "user.name"正しいもの:ng-model = "user.name "

enter image description here

0
Shahidul Haque