2012-09-14 15 views
6

मुझे केओ फ्रेमवर्क पसंद है, हालांकि डीबगिंग कभी-कभी मेरे लिए सिर्फ एक दुःस्वप्न है। नियमित जावास्क्रिप्ट कोड के मामले में मैं ब्रेकपॉइंट डाल सकता हूं और रनटाइम पर वहां जा सकता हूं और देख सकता हूं कि क्या गलत है, लेकिन नॉकआउट एक्सप्रेशन कैसे डिबग करें? ज्यादातर मामलों में बाइंडिंग त्रुटियों में कुछ प्रतीक या गलत वाक्यविन्यास गायब होने का परिणाम होता है, और कभी-कभी नॉकआउट मुझे इस मुद्दे के बारे में स्पष्ट त्रुटियों को दिखाता है, लेकिन कभी-कभी नहीं, अपेक्षित डेटा पृष्ठ पर दिखाई नहीं देता है, या 'बाध्यकारी अभिव्यक्ति गलत' जैसे त्रुटि संदेश होते हैं। , यहां तक ​​कि 'फ़ंक्शन एबीसी' जैसे संदेश भी नहीं मिलते हैं, मुझे तुरंत यह समझने नहीं आता कि क्या गलत है क्योंकि मुझे नहीं पता कि मेरे मॉडल केओ रनटाइम का कौन सा स्तर इस समय से गुज़र रहा है। आदर्श रूप से एक ब्राउजर प्लगइन होना चाहिए जो कि किसी भी केओ अभिव्यक्ति पर ब्रेकपॉइंट्स या कुछ डालने दे और रनटाइम पर चल रहे संदर्भ को देखें। क्या ऐसा कुछ बाजार पर है या उम्मीद है? डीबगिंग प्रक्रिया में सुधार के संबंध में कोई विचार?आप अपने knockout.js बाध्यकारी अभिव्यक्तियों को कैसे डिबग करते हैं?

+4

कुछ सुझाव: अपने वर्तमान संदर्भ को देखने के लिए यहां एक नज़र डालें: http://stackoverflow.com/questions/9261296/any-good-techniques-to-debug-template-binding-faults-for- नॉकआउट-js। साथ ही, यदि आप वास्तव में मार्कअप से बाहर अपने बाध्यकारी अभिव्यक्तियों को स्थानांतरित करना चाहते हैं, तो इस प्रोजेक्ट पर एक नज़र डालें: https://github.com/rniemeyer/knockout-classBindingProvider –

+0

धन्यवाद। उसी प्रश्न का उत्तर दिया गया है – YMC

+0

मैं एक छोटे डीबग बाध्यकारी का उपयोग करता हूं हैंडलर: http://stackoverflow.com/a/16242988/647845 –

उत्तर

10

विकास के दौरान, मैं डीबग संस्करणों का उपयोग करता हूं और createBindingsStringEvaluator() (v2.1.0 में पंक्ति 1858) पर ब्रेकपॉइंट सेट करता हूं। तो बाइंडिंग "पार्स" होने से ठीक पहले, आप उस अभिव्यक्ति का विश्लेषण कर सकते हैं जिसका मूल्यांकन किया जाएगा, पता लगाएं कि कौन से बाइंडिंग विफल हो गए हैं, उनके संदर्भ और आप बाध्यकारी प्रक्रिया के माध्यम से कदम उठा सकते हैं ताकि आप विफल होने तक सभी तरह से चल सकें।

बहुत जटिल बाइंडिंग के लिए समस्याओं को कम करने के लिए, विशेष रूप से यदि उन्हें दोहराने की आवश्यकता है, तो मैं कुछ कस्टम बाध्यकारी हैंडलर बनाने पर विचार करता हूं जो एक बार में बाइंडिंग का एक सेट लागू कर सकते हैं।

+0

जब आप अपने सभी बाइंडिंग विफल होते हैं और कोई स्क्रिप्ट त्रुटियां नहीं होतीं तो आप क्या करते हैं? – Nikos

+2

यह इस बात पर निर्भर करता है कि आपके पास किस तरह की "विफलता" है। यदि यह कई बाइंडिंग में होता है, तो एक समय में समस्याओं का सामना करें। समझें कि यह सुनिश्चित करने में विफल क्यों हुआ कि आप जो भी उम्मीद करते हैं वह सब कुछ है। –

+0

कूल धन्यवाद !!!! – Nikos

0

वर्तमान संस्करण (v 3.4.1) में, फ़ंक्शन को parseBindingsString कहा जाता है। वहां debugger या console.log सेट करना, आपको कुछ जानकारी मिल जाएगी।

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