2013-01-30 26 views
5

0gमें एनजी-क्लिक बनाम घड़ी मेरे पास एक निर्देश है जो एक JSON फ़ाइल लोड करता है, फिर उस डेटा का उपयोग एचटीएमएल 5 कैनवास ड्राइंग बनाने के लिए करता है (यानी जेसन डेटा टेक्स्ट, रंग, स्थिति जैसी चीजें रखता है)। मेरे पास कई इनपुट फ़ील्ड्स (टेक्स्ट, स्लाइडर्स इत्यादि) भी हैं जो उपयोगकर्ता को ड्राइंग में हेरफेर करने की अनुमति देते हैं। मैं देखता हूं कि मैं या तो इन तत्वों में से प्रत्येक को देख सकता हूं या एनजी-क्लिक का उपयोग कर सकता हूं और फ़ंक्शन को कॉल कर सकता हूं - क्या कोई अनुशंसित दृष्टिकोण है?एंगुलर

कुछ शायद प्रासंगिक नोट:

  • प्रपत्र तत्व और कैनवास एक ही निर्देश टेम्पलेट का हिस्सा
  • प्रपत्र तत्वों onchange प्रतिक्रिया तो कोई बटन
  • इन प्रपत्र तत्व मूल्य के प्रत्येक प्रस्तुत कर रहे हैं चेक प्राप्त करें, शायद परिवर्तित हो जाएं तो वे जेसन स्ट्रिंग को संशोधित करें। मैं फिर एक ताज़ा फ़ंक्शन कॉल करता हूं जो नए डेटा के साथ मेरे कैनवास को पुनः लोड करता है।

यह संभव है कि मैं यह भी गलत तरीके से आ रहा हूँ ...

उत्तर

7

तो मैं क्या समझ कुछ तत्वों पर उपयोगकर्ता द्वारा कुछ कार्यों (एक निर्देश के अंदर) के देखते हैं और आप से कुछ करने के लिए हर बार इन घटनाओं को निकाल दिया जाता है।

$ घड़ी का इरादा किसी विशेष चर के मूल्य में हर बार 'घड़ी'/कुछ करना होता है। $scope.$watch('watchedVariable', onWatchedVariableChangedFn) जहां onWatchedVariableChangedFn एक फ़ंक्शन है। यह तब तभी ट्रिगर होता है जब मूल्य वास्तव में बदलता है, भले ही परिवर्तन का कारण बनता है।

दूसरी ओर, आप इवेंट हैंडलर को मार्कअप विशेषताओं जैसे ng-click='onClickFn()' पर हुक कर सकते हैं। इन्हें UI तत्वों पर कार्रवाइयों से निकाल दिया जाता है। [यह भी ध्यान दें कि एनजी-क्लिक केवल क्लिक करने योग्य तत्वों पर ही काम करेगा। आपके पास कई तत्व (टेक्स्ट, स्लाइडर, आदि) प्रतीत होते हैं।]

आपको यह देखना होगा कि इन मूल्यों में परिवर्तन का कारण क्या हो सकता है/आप अपने कैनवास को फिर से ले सकते हैं और फिर तय कर सकते हैं कि आप किस तरह से जाना चाहते हैं।

संपादित करें: एक तीसरा वैकल्पिक जिसे आप विचार करना चाहते हैं, आग लगाना है ($ emit/$ प्रसारण) और जहां भी लागू हो, उन घटनाओं को संभालें।