यहां आपके प्रश्न का एक और सीधा जवाब है।
दूसरे उदाहरण में, आप एक ऐसे फ़ंक्शन का जिक्र कर रहे हैं जो वैश्विक दायरे में होना चाहिए (यानी window
ऑब्जेक्ट की एक संपत्ति)।
पहले उदाहरण में, आप वर्तमान दृश्य मॉडल की एक संपत्ति का जिक्र कर रहे हैं।
हां, यह एक सूक्ष्म भेद है, लेकिन यह एक महत्वपूर्ण है। यदि आप ऑन-इवेंट विशेषताओं का उपयोग करते हैं तो आप केवल उन चीजों को संदर्भित कर सकते हैं जो वैश्विक दायरे में मौजूद हैं। इसका मतलब है कि आपको वैश्विक क्षेत्र में जो कुछ भी एक्सेस करना है उसे रखना है, जो बहुत गन्दा कोड की ओर जाता है।
यदि आप घोषणात्मक बाइंडिंग का उपयोग करते हैं, तो इसके बजाय बाइंडिंग का सटीक अर्थ संदर्भ पर निर्भर करता है।
यह एचटीएमएल मार्कअप के बारे में अधिक संयोग के बारे में सोचने में मदद करता है। आप वास्तव में क्या देख रहे हैं दृश्य मॉडल के लिए संरचित पहुंच है। with
और forEach
को नेस्टेड संदर्भों और अन्य बाइंडिंग के रूप में उनके गुणों के रूप में सोचें। घोषणात्मक बाइंडिंग और अंतर्निहित एचटीएमएल के बीच का रिश्ता अचानक एक्सएसएलटी के साथ काम करने जैसा लगता है।
दो उदाहरण देखें बहुत समान। लेकिन अंतर्निहित अवधारणाएं काफी अलग हैं और जो डेटा को इतना शक्तिशाली और ऑन-इवेंट गुणों को बाध्यकारी बनाती हैं, वे इतनी अप्रिय होती हैं।
ऑन-इवेंट विशेषताएं इस पर फंसे हुए हैं कि वे संरचना के साथ तर्क को मिश्रित नहीं करते हैं। यह है कि वे HTML तत्वों के लिए मनमानी जावास्क्रिप्ट कोड बोल्ट करने के लिए एक कमजोर प्रयास हैं जो अनुप्रयोग तर्क के उचित encapsulation को रोकता है।ऑन-इवेंट विशेषता निम्न-स्तर "हुक" हैं, बाइंडिंग तत्वों के व्यवहार को बढ़ाती है।
सभी ने कहा कि, घोषणात्मक बाइंडिंग का उपयोग करके लोगों ने ऑन-इवेंट विशेषताओं के साथ किया है, वही भयानक चीजें करना संभव है। अंतर यह है कि आप उनके साथ और क्या कर सकते हैं। आपको हमेशा तकनीकों का न्याय नहीं करना चाहिए कि उनका दुरुपयोग कैसे किया जा सकता है - हम यहां सभी वयस्क हैं।
स्रोत
2012-06-18 00:40:23
मुझे हमेशा विश्वास है कि आपको एक फ़ाइल में एक से अधिक भाषा नहीं होने चाहिए। आम तौर पर मैंने एक आईडी या कक्षा सेट की है और पेज को पूरा करने के बाद भी इसे फ़ंक्शन बाध्य कर दिया है। – dqhendricks
लगता है कि यहां एमवीवीएम के बारे में कम समस्या है और अविभाज्य जावास्क्रिप्ट के पेशेवरों/विपक्ष के बारे में अधिक जानकारी: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript – Craig
@Craig मार्कअप में डेटा-बाइंड होने पर यह प्रतीत नहीं होता है अविभाज्य जेएस की भावना, इसलिए मुझे यकीन नहीं है कि यह वास्तव में क्या है। – heisenberg