2012-07-21 16 views
11

मैं अपने AngularJS अनुप्रयोग में कुछ बहुत ही अजीब व्यवहार दिखाई दे रही है।

जब एक भी $ प्रसारण किया जाता है, (केवल) रिसीवर दो बार गोली चलाई है।

पूरे ऐप पर प्रभाव यह है कि रिसीवर को केवल को पर निकाल दिया गया था। (यानी टोकरी में आइटम में से केवल एक जोड़ा जाता है)।

यदि आप दो बार प्रसारण प्रसारित करते हैं (यानी $ प्रसारण पर आग लगने वाले बटन पर दो बार क्लिक करें), तो आपको रिसीवर के चार निष्पादन मिलते हैं, लेकिन टोकरी में दो वस्तुओं की मात्रा सही ढंग से जोड़ दी जाती है।

वहाँ कुछ स्प्रेडशीट की तरह पुनर्गणना यहाँ पर जा रहा है? क्या $ स्कोप फ़ंक्शंस को 'सादा' जावास्क्रिप्ट चर को प्रभावित करने की आवश्यकता नहीं है?

मेरे समस्या यह है कि मैं एक alert जोड़ दिया है और उसे दो बार दिखाया जा रहा है है।


मैं इस दूर करने में कुछ और काम किया है:

मैं एक काउंटर जो बार प्रसारण प्राप्त किया गया था की संख्या की गणना गयी।

तो गुंजाइश (एक डॉलर के बिना) वैश्विक है, मैं दोगुनी परिणाम मिलता है। यदि इसका दायरा सीटीएलआर फ़ंक्शन के लिए स्थानीय है, तो मुझे एक दोगुना परिणाम मिलता है।

मैं किसी भी तरह मेरी नियंत्रक के दो उदाहरणों बनाया है सकते हैं?

मैं फ़ायरबग कि $ http ajax नियंत्रक से किया अनुरोध केवल एक बार घटित से देख सकते हैं, तो मैं बहुत उलझन में हूँ।

+1

आप अभी तक इसे करने की कोशिश नहीं की है AngularJS Batarang Chrome एक्सटेंशन की जाँच का निवारण करने के (https://github.com/angular/angularjs-batarang) मामले में एक नेस्टेड गुंजाइश कुछ भ्रम की स्थिति पैदा कर रहा है। – Gloopy

उत्तर

22

मैं देखना यह है कि कितनी बार प्रारंभ होने के बाद अपने नियंत्रक के शरीर में एक console.log बयान जोड़कर शुरू होगा। नियंत्रकों के लिए जीवन चक्र छोटा हो सकता है क्योंकि वे डीओएम तत्वों से बंधे हैं जिन्हें अक्सर बनाया और नष्ट किया जा सकता है।

आप $ routeProvider उपयोग कर रहे हैं, तो आप "नियंत्रक" संपत्ति के लिए एक मूल्य को निर्दिष्ट कर रहे हैं? यदि हां, तो क्या आप "एनजी-नियंत्रक" विशेषता का उपयोग करके आंशिक रूप से एक ही नियंत्रक को निर्दिष्ट कर रहे हैं? आप वास्तव में एक या दूसरे, दोनों नहीं लेने के लिए चाहते हैं अन्यथा दो नियंत्रक उदाहरणों हर बार जब आप उस मार्ग पर नेविगेट बनाया जाएगा।

+2

मुझे लगता है कि यह है - मैं 'एनजी-कंट्रोलर' से '$ रूटप्रोवाइडर 'में स्थानांतरित हो गया था और मुझे एहसास नहीं हुआ कि मुझे' ng-controller' को हटाने की आवश्यकता है जब मैंने पृष्ठ को आंशिक रूप से काट दिया था। मैं इस सप्ताहांत की जांच करूंगा, फिर जवाब स्वीकार करूंगा। – fadedbee