[javascript] कोणीय में पैरेंट स्कोप चर अद्यतन करें



Answers

इस कार्य को करने और $scope.$parent उपयोग न करने का एक और तरीका है $scope.$parent वैरिएबल।

केवल मूल दायरे में मूल्य बदलने के लिए एक विधि तैयार करें और इसे बच्चे में उपयोग करें। इस कदर:

app.controller('ctrlParent',function($scope) {
  $scope.simpleValue = 'x';
  $scope.changeSimpleValue = function(newVal) {
    $scope.simpleValue = newVal;
  };
});

app.controller('ctrlChild',function($scope){
    $scope.changeSimpleValue('y');
});

यह भी काम करता है और मूल्य परिवर्तन पर आपको अधिक नियंत्रण देता है।

इसके बाद आप HTML में भी विधि को कॉल कर सकते हैं जैसे: <a ng-click="changeSimpleValue('y')" href="#">click me!</a>

Question

मेरे पास दो नियंत्रक हैं जो एक दूसरे के भीतर लपेटे हैं। अब मुझे पता है कि बच्चे के दायरे में माता-पिता के दायरे से गुण प्राप्त होते हैं लेकिन क्या माता-पिता के दायरे को अद्यतन करने का कोई तरीका है? अब तक मैं किसी भी स्पष्ट समाधान में नहीं आया है।

मेरी स्थिति में मेरे पास एक रूप में कैलेंडर नियंत्रक है। मैं मूल दायरे (जो फॉर्म है) से प्रारंभ और समाप्ति तिथियां अपडेट करना चाहता हूं ताकि फॉर्म सबमिट होने पर प्रारंभ और समाप्ति तिथियां हो।




जब आप किसी दायरे में एक आदिम विशेषता आवंटित करते हैं, तो यह हमेशा गुंजाइश (संभवतः फ्लाई पर बनाया गया) के लिए स्थानीय होता है , भले ही माता-पिता के दायरे में एक ही नाम के साथ एक विशेषता हो। यह एक डिजाइन निर्णय है, और एक अच्छा आईएमएचओ है।

यदि आपको मूल दायरे में कुछ आदिम (इनट्स, बूलियन, तार) को बदलने की आवश्यकता है, तो दृश्य से, आपको उस दायरे में किसी अन्य ऑब्जेक्ट की विशेषता होने की आवश्यकता है, इसलिए असाइनमेंट पढ़ सकता है:

<a ng-click="viewData.myAttr = 4">Click me!</a>

और यह बदले में होगा:

  1. viewData ऑब्जेक्ट को जो भी स्कोप परिभाषित किया गया है उसे प्राप्त करें
  2. अपने myAttr विशेषता को 4 असाइन करें।



Related