2013-10-17 11 views
34

मैं अपने एनजी-मॉडल को 'बाहरी निर्देश' से 'आंतरिक-निर्देशक' (जो बाह्य-निर्देश टेम्पलेट में निहित है) से पास करना चाहता हूं।नेस्टेड निर्देशों में एनजी-मॉडल पास करना

ऐसा करने का सही तरीका क्या है?

एचटीएमएल कोड:

<body> 
    <outer-directive ng-model="prop" /> 
</body> 

और निर्देश कोड:

angular.module('app', []).directive('outerDirective', function(){ 
    return { 
     template: '<inner-directive ng-model="prop" />', 
     link: function() { ... } 
    } 
}); 
+1

बहुत सहज ज्ञान युक्त: http://jsfiddle.net/cherniv/UAvaB/ – Cherniv

उत्तर

44

तुम एक द्वि-दिशात्मक बंधन में चर के साथ (documentation, अनुभाग "निर्देशक परिभाषा ऑब्जेक्ट" देखें) सेट कर सकते हैं ngModel विशेषता, किसी अन्य निर्देश के साथ:

<my-directive ng-model="foo"></my-directive> 
myApp.directive('myDirective', function() { 
    return { 
     template: '<div><input type="text" ng-model="ngModel" /></div>', 
     replace: true, 
     scope: { 
      ngModel : '=', 
     }, 
    }; 
}); 

Fiddle

+3

धन्यवाद! यह खूबसूरती से काम कर रहा है मुझे विश्वास नहीं था कि यह इतना आसान होगा इसलिए मैंने लिंक फ़ंक्शन के अंदर jquery का उपयोग करके कुछ भयानक चीजों की कोशिश की, जिनमें से कोई भी काम नहीं करता ... – user2794782

+5

यह बाहरी मॉडल के मुद्दे को संबोधित नहीं करता है '$ pristine = सत्य 'और इनपुट का मॉडल '$ dirty = true'। क्या इन सत्यापन राज्य परिवर्तनों को निर्देश-स्तर 'एनजी-मॉडल' में प्रसारित करने का कोई तरीका है? – jusopi

+2

यह तब काम नहीं करता है जब निर्देशों के बाद के कोणीय संस्करणों में एक अलग दायरा हो। –

0

मैं तुम्हें निर्देश में प्रपत्र गुजरती हैं और प्रपत्र गंदा निर्धारित करने की आवश्यकता लगता मैन्युअल

<directive directive-form="editForm" ></directive> 

scope: { 
directiveForm:"=" 
}, 
link: function (scope, $elem, $attrs) 
{ 
    scope.directiveForm.$setDirty(); 
} 
संबंधित मुद्दे