एंगुलरजेस में, नियंत्रकों में $scope
और scope
("$"
के बिना) निर्देश लिंक लिंक में उपयोग करने का कोई विशिष्ट कारण है? क्या यह सिर्फ एक सम्मेलन है या कुछ और?
उत्तर
मामला है जब आप $scope
नियंत्रक में निर्भरता इंजेक्शन का उपयोग कर इस मामले scope
नाम के रूप में कार्य नहीं करेगा में चर नाम $scope
मिलान, के आधार पर गुंजाइश injects है।
निर्देश के मामले में इंजेक्शन स्थिति आधारित है ताकि आप अपने चर a
या b
या किसी भी चीज़ का नाम दे सकें। लिंक समारोह के लिए निर्देश के क्रम
(scope, iElement, iAttrs, controller)
तो पहला तत्व हमेशा गुंजाइश वस्तु है।
प्रतिक्रिया के लिए धन्यवाद। मुझे यहां एक विस्तृत स्पष्टीकरण भी मिला: http://www.thinkster.io/pick/aw9kWmdnik/angularjs-scope-vs-scope – Vijey
मैं बाद वाले भाग को स्पष्ट करता हूं क्योंकि "निर्देश लिंक फ़ंक्शन के मामले में, इंजेक्शन स्थिति है आधारित, इसलिए 'स्कोप' का उपयोग करना वास्तव में सिर्फ सम्मेलन है। " (मुझे कोई अच्छी स्पष्टीकरण नहीं मिल रही है कि क्यों '$ स्कोप' का उपयोग यहां नहीं किया जाता है, साथ ही, अगर केवल स्थिरता के लिए) – rinogo
आप जॉन लिंडक्विस्ट द्वारा इस प्रश्न का एक बहुत अच्छा वीडियो जवाब यहां देख सकते हैं: http://egghead.io/lessons/angularjs-scope-vs-scope।
सही स्पष्टीकरण, सही दिशा में इंगित करने के लिए धन्यवाद। –
इस व्यवहार का कारण यह है कि, नियंत्रकों के विपरीत, निर्देश निर्भरता इंजेक्शन का उपयोग नहीं करते हैं, इसके बजाय वे दृश्य के पीछे रखे गए नियंत्रक द्वारा बनाए गए दायरे को पारित कर दिए जाते हैं। यह बहुत मुश्किल है, इसलिए आप अलग-अलग क्षेत्रों पर अपना निर्देश दोबारा उपयोग कर सकते हैं।
$
"$scope"
में इंगित करता है कि दायरे का मूल्य वर्तमान संदर्भ में इंजेक्शन दिया जा रहा है।
$scope
$scopeProvider
द्वारा प्रदान की जाने वाली एक सेवा है।
module.controller(function($scope) {...})
जो
module.controller(['$scope', function($scope) {...}])
हालांकि, scope
के लिए आशुलिपि कुछ भी हो सकता है, यह एक समारोह पैरामीटर नाम है,: आप नियंत्रकों, निर्देशों या अन्य सेवाओं कोणीय के अंतर्निहित निर्भरता इंजेक्टर का उपयोग कर को इसकी सुई कर सकते हैं foo
या a12342saa
हो सकता है।
function link(scope, element, attributes) {
// Only scope
}
"$ स्कोप" में "$" इंगित करता है कि दायरे का मूल्य वर्तमान संदर्भ में इंजेक्शन दिया जा रहा है। लेकिन, दायरे के सभी संदर्भ निर्भरता इंजेक्शन पर आधारित नहीं हैं।
मॉड्यूल फैक्टरी विधियों जैसे नियंत्रक, निर्देश, फैक्ट्री, फ़िल्टर, सेवा, एनीमेशन, कॉन्फ़िगर और रन निर्भरता इंजेक्शन (डीआई) के माध्यम से तर्क प्राप्त करते हैं। DI के मामले में, आप स्कोप ऑब्जेक्ट डॉलर उपसर्ग i.e. $ स्कोप के साथ इंजेक्ट करते हैं। कारण इंजेक्शन तर्कइंजेक्शन-सक्षम ऑब्जेक्ट्स के बाद डॉलर ($) उपसर्ग के नाम से मेल खाना चाहिए।
उदाहरण के लिए, आप गुंजाइश इंजेक्षन कर सकते हैं और नीचे दिए गए के रूप में तत्व एक नियंत्रक में वस्तुओं:
module.controller('MyController', function ($scope, $element) { // injected arguments });
निर्देश लिंकर समारोह की तरह तरीकों निर्भरता इंजेक्शन के माध्यम से तर्क प्राप्त नहीं होता है, तो आप सिर्फ पारित स्कोप ऑब्जेक्ट डॉलर उपसर्ग यानी स्कोप का उपयोग किए बिना। इसका कारण है कि गुजरने वाले तर्क उसके कॉलर द्वारा प्राप्त किए जाते हैं।
module.directive('myDirective', function() // injected arguments here
{
return {
// linker function does not use dependency injection
link: function (scope, el, attrs) {
// the calling function will passes the three arguments to the linker: scope, element and attributes, in the same order
}
};
});
संक्षेप में, निर्भरता इंजेक्शन के मामले में गुंजाइश वस्तु गैर निर्भरता इंजेक्शन गुंजाइश वस्तु के मामले में $ गुंजाइश जबकि प्राप्त होता है गुंजाइश के रूप में या किसी नाम के साथ प्राप्त होता है।
- 1. एंगुलरज स्कोप
- 2. VB.NET लूप फ़ंक्शन स्कोप बनाम ब्लॉक स्कोप
- 3. शाब्दिक स्कोप बनाम एमएल
- 4. स्कोप
- 5. स्कोप
- 6. स्कोप
- 7. स्कोप
- 8. स्कोप
- 9. स्कोप
- 10. स्कोप
- 11. स्कोप
- 12. टाइपिंग बनाम @types एनपीएम स्कोप
- 13. $ स्कोप। $ EvalAsync बनाम $ scope। $ ApplyAsync
- 14. कस्टम निर्देश स्कोप बनाम attrs
- 15. ग्लोबल स्कोप बनाम वैश्विक नामस्थान
- 16. कोणीय: स्कोप वैरिएबल बनाम फ़ंक्शन
- 17. App.config: उपयोगकर्ता बनाम एप्लिकेशन स्कोप
- 18. एंगुलरजेएस निर्देश - पृथक स्कोप और विरासत स्कोप
- 19. ब्लॉक स्कोप
- 20. Autorelease स्कोप
- 21. सी # स्कोप
- 22. गणन स्कोप
- 23. एंगुलरजेएस $ स्कोप। $
- 24. वर्तमान स्कोप
- 25. निजी स्कोप
- 26. ActiveAdmin स्कोप
- 27. "नियंत्रक के रूप में" बनाम अलगाव स्कोप
- 28. सर्वलेट संदर्भ स्कोप बनाम वैश्विक चर
- 29. छूट: $ स्कोप के लिए कोई प्रदाता नहीं! (फ़ंक्शन (स्कोप, elementRef) {-> $ स्कोप)
- 30. मोंगोडीबी जावा चालक के तहत मैप्रिडस कमांड स्कोप; स्कोप
यह सिर्फ एक परिवर्तनीय नाम है, इसलिए वास्तव में नहीं। – ivarni
समान प्रश्न [यहां] (http://stackoverflow.com/questions/18719140/angular-link-function-scope-vs-scope/18719347#comment27583647_18719347) – gargc