'…' Yönergesinin gerektirdiği 'ngModel' denetleyicisi bulunamıyor


88

Burada neler oluyor?

İşte benim direktifim:

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

          // do something
        }
    };
});

İşte kullanımdaki direktifin bir örneği:

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

İşte gerçek hata metni:

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

Yanıtlar:


127

Burada açıklandığı gibi: Angular NgModelController , <inputgerekli denetleyiciyi sağlamalısınızngModel

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

1
Mükemmel. Buna minnettarım! Bunu cevap olarak işaretleyeceğim. Bir takip sorum var. Başka bir soru göndermeli miyim yoksa orijinalimi değiştirmeli miyim?
Shaun Luttin


2
yanlışlıkla yazdım ng-modelsve bu hatayı aldım.
chovy

@Radim Kohler Cevabınızın aslında ihtiyacı olan birine yardım etmesine sevindim, ben de bunu başarmaya yakınım. Yukarıdaki girdi ifadesinden, "ng-modeli" özniteliği için "{{KökNesneAdı +". "+ ModelAdı}}" gibi dize birleştirme kullanabilir miyim ?? !! $ Kapsamındaki modellerim basit olmadığından ve DB'den gelen girdiye göre denetleyicide dinamik olarak oluşturulduğundan
pavan kumar

@pavankumar bu bağlantıyı kontrol edin next.plnkr.co/edit/… bu ng-model="RootObject[alias]", oturumun `$ kapsam.RootObject = {}; $cope.alias = "FirstName" "... takma ad yerine, forEach bile dinamik adı sağlayabilir
Radim Köhler

8

Bu sorunun olası bir çözümü, bu ng-modelyönergeyi kullanmak için özniteliğin gerekli olmasıdır.

Dolayısıyla, "ng-modeli" özniteliğinin eklenmesi sorunu çözebilir.

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

Bu benimkini çözdü. Teşekkürler. Sanırım, ng-değişimini tetiklemek için, elemana bir ng-modeli bağlanması gerektiği noktasını kaçırdık.
2020

1

Ayrıca çizgiyi de kaldırabilirsiniz

  require: 'ngModel',

ngModelbu direktifte ihtiyacınız yoksa . Kaldırmak ngModel, bu ngModelhata olmadan bir yönerge oluşturmanıza olanak sağlar .


0

Aynı hatayla karşılaştım, benim durumumda ng-modeli yönergesini "ng-moel" gibi bir şeyi yanlış yazdım

Yanlış olan: ng-moel = "user.name" Doğru olan: ng-model = "user.name"

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.