दिलचस्प पोस्ट
Laravel को Mcrypt PHP एक्सटेंशन की आवश्यकता है क्यों <center> टैग HTML में बहिष्कृत है? मैं क्वेरी स्ट्रिंग पैरामीटर को कैसे जोड़ या अपडेट कर सकता / सकती हूं? सी # में दो विंडोज़ फार्मों के बीच संवाद DexIndexOverflowException केवल जब परीक्षण चल रहा है एएसपी.नेट में फ़ाइलों को स्ट्रीम करने का सर्वोत्तम तरीका स्टार्टअप पर शेल स्क्रिप्ट को चलाने के लिए XML नामस्थानों के साथ XPath कैसे काम करता है? एकाधिक कुंजी के साथ एक नक्शा कैसे कार्यान्वित करें? प्रबंधित तरीके से .NET में मूल प्रक्रिया कैसे प्राप्त करें I ओरेकल में कई पंक्तियों में विभाजन स्ट्रिंग फ़ाइल डाउनलोड के लिए HTTP शीर्षलेख Object.create () और नए SomeFunction () के बीच अंतर को समझना आप पायथन में वापसी कथन का उपयोग क्यों करेंगे? बड़ी HTML तालिका छपाई करते समय पेज ब्रेक्स के साथ कैसे निपटें

बाल नियंत्रक से कोणीय जेएस अभिगम अभिभावक गुंजाइश

मैंने अपने नियंत्रकों को data-ng-controller="xyzController as vm" का उपयोग कर सेट अप किया है

मेरे माता-पिता / बच्चे नेस्टेड नियंत्रकों के साथ एक परिदृश्य है $parent.vm.property का उपयोग करके नेस्टेड HTML में मूल गुणों को एक्सेस करने में मुझे कोई समस्या नहीं है, लेकिन मुझे यह पता नहीं लगा कि मेरे बच्चे नियंत्रक के भीतर से मूल संपत्ति कैसे $parent.vm.property

मैंने $ गुंजाइश को इंजेक्शन करने और फिर $scope.$parent.vm.property का उपयोग करने की कोशिश की है $scope.$parent.vm.property , लेकिन यह काम नहीं कर रहा है?

क्या कोई सलाह दे सकता है?

वेब के समाधान से एकत्रित समाधान "बाल नियंत्रक से कोणीय जेएस अभिगम अभिभावक गुंजाइश"

यदि आपका HTML नीचे जैसा है तो आप ऐसा कुछ कर सकते हैं:

 <div ng-controller="ParentCtrl"> <div ng-controller="ChildCtrl"> </div> </div> 

इसके बाद आप इस प्रकार मूल अभिमुखताओं तक पहुंच सकते हैं

 function ParentCtrl($scope) { $scope.cities = ["NY", "Amsterdam", "Barcelona"]; } function ChildCtrl($scope) { $scope.parentcities = $scope.$parent.cities; } 

यदि आप अपने दृश्य से एक पेरेंट कंट्रोलर तक पहुंच बनाना चाहते हैं तो आपको ऐसा कुछ करना होगा:

 <div ng-controller="xyzController as vm"> {{$parent.property}} </div> 

JsFiddle देखें: http://jsfiddle.net/2r728/

अद्यतन करें

दरअसल, जब से आप माता-पिता के नियंत्रक में cities को परिभाषित करते cities , तो आपका बच्चा नियंत्रक सभी गुंजाइशों को प्राप्त करेगा I इसलिए सिद्धांतिक रूप से आपको $parent को कॉल करने की ज़रूरत नहीं है ऊपर दिए गए उदाहरण भी निम्नानुसार लिखा जा सकता है:

 function ParentCtrl($scope) { $scope.cities = ["NY","Amsterdam","Barcelona"]; } function ChildCtrl($scope) { $scope.parentCities = $scope.cities; } 

AngularJS डॉक्स इस दृष्टिकोण का उपयोग करते हैं, यहां आप $scope बारे में अधिक पढ़ सकते हैं।

एक अन्य अद्यतन

मुझे लगता है कि यह मूल पोस्टर का बेहतर जवाब है।

एचटीएमएल

 <div ng-app ng-controller="ParentCtrl as pc"> <div ng-controller="ChildCtrl as cc"> <pre>{{cc.parentCities | json}}</pre> <pre>{{pc.cities | json}}</pre> </div> </div> 

जे एस

 function ParentCtrl() { var vm = this; vm.cities = ["NY", "Amsterdam", "Barcelona"]; } function ChildCtrl() { var vm = this; ParentCtrl.apply(vm, arguments); // Inherit parent control vm.parentCities = vm.cities; } 

यदि आप controller as विधि के controller as उपयोग करते हैं तो आप निम्न प्रकार के अभिभावक क्षेत्र तक पहुंच सकते हैं

 function ChildCtrl($scope) { var vm = this; vm.parentCities = $scope.pc.cities; // note pc is a reference to the "ParentCtrl as pc" } 

जैसा कि आप देख सकते हैं कि $scopes तक पहुंचने के कई अलग-अलग तरीके हैं।

नवीनीकृत बेला

 function ParentCtrl() { var vm = this; vm.cities = ["NY", "Amsterdam", "Barcelona"]; } function ChildCtrl($scope) { var vm = this; ParentCtrl.apply(vm, arguments); vm.parentCitiesByScope = $scope.pc.cities; vm.parentCities = vm.cities; } 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js"></script> <div ng-app ng-controller="ParentCtrl as pc"> <div ng-controller="ChildCtrl as cc"> <pre>{{cc.parentCities | json}}</pre> <pre>{{cc.parentCitiesByScope | json }}</pre> <pre>{{pc.cities | json}}</pre> </div> </div> 

मैंने अभी जांच की है

 $scope.$parent.someProperty 

मेरे लिये कार्य करता है।

और यह हो जाएगा

 {{$parent.someProperty}} 

दृश्य के लिए

जब आप सिंटैक्स के as में उपयोग कर रहे हैं, जैसे ParentController as parentCtrl , एक नियंत्रक को परिभाषित करने के लिए उसके बाद बाल नियंत्रक के उपयोग में अभिभावक स्कोप वैरिएबल का उपयोग निम्नलिखित है:

 var id = $scope.parentCtrl.id; 

जहां parentCtrl सिंटैक्स के as उपयोग किए जाने वाले पैरेंट कंट्रोलर का नाम है और id एक ही नियंत्रक में एक चर परिभाषित है।

कुछ समय आपको माता-पिता की संपत्ति को सीधे बाल दायरे के भीतर अपडेट करना पड़ सकता है उदाहरण के लिए एक बच्चे नियंत्रक द्वारा बदलाव के बाद माता-पिता के नियंत्रण की तारीख और समय को बचाने की आवश्यकता है। जैसे JSFiddle में कोड

एचटीएमएल

 <div ng-app> <div ng-controller="Parent"> event.date = {{event.date}} <br/> event.time = {{event.time}} <br/> <div ng-controller="Child"> event.date = {{event.date}}<br/> event.time = {{event.time}}<br/> <br> event.date: <input ng-model='event.date'><br> event.time: <input ng-model='event.time'><br> </div> </div> 

जे एस

  function Parent($scope) { $scope.event = { date: '2014/01/1', time: '10:01 AM' } } function Child($scope) { } 

आप "वैश्विक" गुंजाइश में दायरा विरासत और चीज़ों को स्टोर कर सकते हैं।

यदि आपके पास आपके आवेदन में एक मुख्य नियंत्रक है जो अन्य सभी नियंत्रकों को लपेटता है, तो आप वैश्विक हित के लिए "हुक" स्थापित कर सकते हैं:

 function RootCtrl($scope) { $scope.root = $scope; } 

फिर किसी भी बच्चे नियंत्रक में, आप $scope.root साथ "वैश्विक" दायरे तक पहुंच सकते हैं आपके द्वारा यहां सेट किया गया कोई भी स्थान विश्व स्तर पर दिखाई देगा।

उदाहरण:

 function RootCtrl($scope) { $scope.root = $scope; } function ChildCtrl($scope) { $scope.setValue = function() { $scope.root.someGlobalVar = 'someVal'; } } function OtherChildCtrl($scope) { } 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app ng-controller="RootCtrl"> <p ng-controller="ChildCtrl"> <button ng-click="setValue()">Set someGlobalVar</button> </p> <p ng-controller="OtherChildCtrl"> someGlobalVar value: {{someGlobalVar}} </p> </div> 

मेरा मानना ​​है कि मुझे हाल ही में एक ऐसी ही घबराहट थी

 function parentCtrl() { var pc = this; // pc stands for parent control pc.foobar = 'SomeVal'; } function childCtrl($scope) { // now how do I get the parent control 'foobar' variable? // I used $scope.$parent var parentFoobarVariableValue = $scope.$parent.pc.foobar; // that did it } 

मेरा सेटअप थोड़ा अलग था, लेकिन एक ही बात शायद अभी भी काम करना चाहिए

शायद यह लंगड़ा है, लेकिन आप उन दोनों को कुछ बाहरी वस्तु में भी इंगित कर सकते हैं:

 var cities = []; function ParentCtrl() { var vm = this; vm.cities = cities; vm.cities[0] = 'Oakland'; } function ChildCtrl($scope) { var vm = this; vm.cities = cities; } 

यहां लाभ यह है कि ChildCtrl में संपादकों को अब माता-पिता में डेटा वापस लेना चाहिए।