2015-07-15 3 views
17

इस दस्तावेज़ में एक एनजी-एनीमेशन उदाहरण है: https://docs.angularjs.org/api/ng/directive/ngIf यदि आप चेकबॉक्स को तेज़ी से और बार-बार क्लिक करते हैं, तो आपको एक से अधिक तत्व प्रदर्शित होंगे, मुझे नहीं पता कि इससे कैसे बचें।त्वरित छोड़ें और कोणीय एनजी-एनीमेशन में एकाधिक तत्व दर्ज करें

+1

करने के लिए 0.5s से देरी को संशोधित किया है .animate-यदि आप स्थिति दे सकते हैं: पूर्ण; स्पष्टीकरण के लिए –

उत्तर

11

ऐसा इसलिए होता है क्योंकि ngIf उदाहरण के लिए ngShow से अलग व्यवहार करता है। ngShow बस, तत्व यह है कि छिपे हुए किया जाना चाहिए करने के लिए एक display: none शैली कहते हैं, जबकि ngIf निम्नलिखित है:

ngIf निर्देश निकाल देता है या डोम पेड़ एक {अभिव्यक्ति} के आधार के एक हिस्से का पुनर्निर्माण करने वाला। यदि ngIf को निर्दिष्ट अभिव्यक्ति को गलत मान पर मूल्यांकन करती है तो तत्व को DOM से हटा दिया जाता है, अन्यथा तत्व के क्लोन को DOM में पुन: सम्मिलित किया जाता है।

तो यदि एनीमेशन थोड़ा लंबा लगता है, तो डोम में एक से अधिक तत्व होंगे।

ओलिवव के उदाहरण में, यदि आप .animate-if.ng-enter, .animate-if.ng-leave से 0.001s की देरी को बदलते हैं तो आप देखेंगे कि आपको एक से अधिक तत्व नहीं मिल सकते हैं।

यहां आप यह देखने के लिए आधिकारिक AngularJS दस्तावेज़ का एक फोर्क संस्करण है। http://plnkr.co/edit/ok7nwOIRpR1TYYRkBRXj?p=preview

मैं केवल 0.001s

कक्षा में
+0

धन्यवाद। तो क्लोनिंग हटाने से तेज है, और वे एक-दूसरे को अवरुद्ध नहीं करते हैं? इसलिए यदि एनीमेशन "लंबा" रखना चाहते हैं, तो समाधान क्या है? एनीमेशन अभी भी चल रहा है, जबकि टॉगल कार्रवाई ट्रिगर करने के लिए क्लिक को रोकने के लिए एक debouncer जोड़ें? (बीटीडब्ल्यू, एक ढांचे के रूप में कोणीय नहीं होना चाहिए इसका ख्याल रखना चाहिए? आईएमओ हमें सबसे मानक स्थिति का उपयोग करके दौड़ की स्थिति नहीं मिलनी चाहिए) – Olivvv

+0

सबसे पहले याद रखें कि कोणीयजेएस का उपयोग लाखों लोगों द्वारा किया जा रहा है, इसलिए मेरा मानना ​​है कि इसे मानक रखने की दुविधा, लेकिन आपको इस तरह इसका उपयोग करने के लिए मजबूर कर रही है, या आप इसे जितनी चाहें उतनी स्वतंत्रता देने के लिए मजबूर कर रही है, वे दूसरे के साथ रखीं। –

+0

तो एक और चीज जिस पर आपको विचार करना चाहिए, एनजीशो का उपयोग कर रहा है, जिसे राज्य में अक्सर संशोधित होने पर बेहतर समाधान माना जाता है। आपको इसे डीओएम से हटाने की जरूरत नहीं है और इसे हर बार फिर से बनाना है। आप क्लिक को रोकने के लिए एक उद्घोषक के साथ जो भी उल्लेख करते हैं वह कर सकते हैं, लेकिन क्या यह एक अच्छा यूएक्स समाधान है? या यह सिर्फ एक गंदे कामकाज है? –

संबंधित मुद्दे