angularjs - How to investigate scope in directive? -
मुझे मेरी समस्या दिखाने के लिए यह प्लंकर है:
angular.module ('docsTransclusionExample' , [])। नियंत्रक ('नियंत्रक', ['$ scope', फ़ंक्शन ($ गुंजाइश) {$ scope.arr = [1,2,3,4];}])। डायरेक्टिव ('myDialog', फ़ंक्शन ) {वापसी {प्रतिबंधित: 'ई', क्षेत्र: {arr: '='}, templateUrl: 'my-dialog.html', लिंक: फ़ंक्शन (स्कोप) {var lengthOfArray = scope.arr.length; scope.test = 'सरणी लंबाई' + लंबाईओफ़एरेरे;}};}) है; plunker में, सब कुछ मैं काम करता है के रूप में काम करता है: मैं scope.arr सरणी सेट, और इस लिंक में जांच इससे मुझे संभावनाओं (परीक्षण) में और चीजें जोड़ने की संभावना है, और इसे प्रिंट करें। इस तरह से टेम्पलेट का उपयोग करना:
{{arr}} - {{test}} .. मुझे यह परिणाम मिलता है: < पूर्व> [1,2,3,4] - सरणी लंबाई 4 है SO: इस उदाहरण में, सरणी सीधे ऊपर नियंत्रक पर सेट है लेकिन इस के मेरे वास्तविक कार्यान्वयन में, सरणी एक जेसन ऑब्जेक्ट है, जिसे किसी सर्वर से प्राप्त किया गया है। नतीजा यह है कि मैं परिणाम के रूप में 'अपरिभाषित' रखता हूं। मुझे लगता है कि यह तब से (थोड़ी देर) देरी की वजह से हो सकता है जब निर्देश डेटा के लिए पूछे, जब तक यह वास्तव में वितरित नहीं हो जाता, तब तक निर्देश में लिंक के साथ काम करने के लिए कुछ नहीं है।
कोई भी अच्छा विचार कोशिश कर सकते हैं?
अपडेट: मैंने इस प्लंकर को समस्या दिखाने के लिए बनाया है:
< P> इसे चलाएँ, और फिर परिणाम विंडो में, इसे कुछ ऐसा कहना चाहिए:
सरणी लंबाई 5 (सरणी की सामग्री ...) अब तो, अगर आप script.js (या कोई अन्य फ़ाइल) में जाते हैं, और नीचे या कुछ और में एक लाइनब्रेक जोड़ते हैं, तो प्लंकर पृष्ठ को पुनः लोड कर देगा। और फिर, कभी-कभी, स्क्रिप्ट सरणी को पढ़ने में असफल हो जाएगी, और केवल आउटपुट होगा:
(सरणी की सामग्री ...) मैंने घड़ी जोड़ने की कोशिश की है, लेकिन मुझे यकीन है कि अगर मैं इसे सही ढंग से कर रहा हूं .. क्योंकि यह काम करने में प्रतीत नहीं होता है।
एक और मजेदार बात यह है कि अधिक बार नहीं, यह काम करता है प्लंकर पर होना चाहिए लेकिन स्थानीय होस्ट पर, यह कभी काम नहीं करता है।
अपडेट 2 मैंने इसे $ वॉच का उपयोग करके हल किया है। प्लंकर को सही समाधान पर अपडेट किया गया:
। डायरेक्टिव ('myDialog', फ़ंक्शन) {वापसी {प्रतिबंधित करें: 'ई', दायरा: {contentOfList: '='}, templateUrl: 'my- Dialog.html ', link: function (scope) {scope.counter = 0; scope। $ Watch (' contentOfList ', फ़ंक्शन () {scope.counter = scope.counter + 1; var lengthOfArray = scope.contentOfList.categoryList [ 0] .rows.length; scope.test = 'सरणी लंबाई' + लंबाईओफ़एरेरे;});}};});
यदि आप इसे पहले परिभाषित नहीं करते हैं, तो आप संभावित रूप से एक अपरिभाषित त्रुटि को प्रभावित करेंगे Arr को कॉल करने के बाद ही बनाया जाता है। क्या आप एक खाली सरणी बनाने की कोशिश करते हैं, और तब इसे पॉप्युलेट करें?
कुछ ऐसा है:
कोणीय.मॉड्यूल ('डॉक्ससंभाषण उदाहरण', [])। नियंत्रक ('नियंत्रक' , ['$ Scope', '$ http', फ़ंक्शन ($ दायरा, $ http) {$ scope.arr = []; $ http.get ("somedata.json")। सफलता (कार्य (परिणाम) {$ scope .आरआर = परिणाम;});}]); आशा है कि यह मदद करता है
Comments
Post a Comment