नियंत्रक '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

जैसा कि यहाँ वर्णित है: कोणीय NgModelController , आपको <inputआवश्यक नियंत्रक प्रदान करना चाहिएngModel

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

1
उत्तम। मैं सराहना करता हूँ! मैं इसे उत्तर के रूप में चिह्नित करूंगा। मेरे पास एक अनुवर्ती प्रश्न है। क्या मुझे एक और प्रश्न पोस्ट करना चाहिए या अपना मूल बदलना चाहिए?
शॉन लुटिन

यहाँ इस प्रकार है: stackoverflow.com/questions/21807929/…
शॉन लुटिन

2
मैंने गलती से टाइप किया था ng-modelsऔर मुझे यह त्रुटि मिली।
चॉवी

@Radim Kohler मुझे खुशी है कि आपकी प्रतिक्रिया ने वास्तव में किसी की ज़रूरत में मदद की, मैं खुद इसे प्राप्त करने के करीब हूं। उपरोक्त इनपुट स्टेटमेंट से, "एनजी-मॉडल" विशेषता के लिए क्या मैं "{{रूटऑब्जेक्टनेम +"। "+ मॉडलनेम"} "" जैसे स्ट्रिंग संयोजन का उपयोग कर सकता हूं ?? !! $ स्कोप में मेरे मॉडल सीधे नहीं हैं और गतिशील रूप से DB से इनपुट के आधार पर कंट्रोलर में निर्मित होते हैं
पावन कुमार

@pavankumar इस लिंक को अगला चेक करें ।plnkr.co / edit /… ng-model="RootObject[alias]"यह काम करेगा यदि सत्र में $ गुंजाइश होगी। RootObject = {}; $ गुंजाइश.लियास = "फर्स्टनाम" `... उर्फ ​​का नाम, यहां तक ​​कि फॉरएच भी गतिशील नाम प्रदान कर सकता है
कोहलर

8

इस मुद्दे का एक संभावित समाधान है ng-model उस निर्देश का उपयोग करना आवश्यक है।

इसलिए 'एनजी-मॉडल' विशेषता में जोड़ने से समस्या हल हो सकती है।

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

इससे मेरा हल हो गया। धन्यवाद। मुझे लगता है कि हम इस बिंदु को चूक गए हैं कि एनजी-परिवर्तन को ट्रिगर करने के लिए, तत्व के लिए एनजी-मॉडल बाइंड होना चाहिए।
अनुनाद

1

आप लाइन को हटा भी सकते हैं

  require: 'ngModel',

यदि आपको ngModelइस निर्देश की आवश्यकता नहीं है । हटाने ngModelसे आप उस ngModelत्रुटि के बिना एक निर्देश बना सकेंगे ।


0

मुझे उसी त्रुटि का सामना करना पड़ा, मेरे मामले में मैंने "एनजी-मॉएल" जैसे कुछ एनजी-मॉडल निर्देश को याद किया

गलत एक: ng-moel = "user.name" सही एक: ng-model = "user.name"

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.