2012-05-13 7 views
10

तक प्रदर्शित नहीं होगा तब तक मेरे पास एक वेबपैप में एम्बेड किया गया कोडमिरर उदाहरण है। यह बहुत अच्छा काम करता है - सिवाय इसके कि प्रारंभिक सामग्री तब तक प्रदर्शित नहीं होगी जब तक कि उपयोगकर्ता एक नए चरित्र में प्रवेश न करे। तो यह सब तब तक छिपा हुआ है जब तक कि उपयोगकर्ता परिवर्तन को मजबूर नहीं करता। ये गलत है। क्या कोई तरीका है कि मैं एक चरित्र दर्ज करने के ब्राउज़र के पुनर्निर्मित या ताज़ा करने के लिए मजबूर कर सकता हूं - व्हाइटस्पेस करेगा।CodeMirror में सामग्री है लेकिन जब तक किप्रेस

यहाँ ... कोड है

<textarea id='code-mirror' ><?php echo $contents; ?></textarea> 
<script> 
    jQuery(document).ready(function(){ 
     var textarea = document.getElementById('code-mirror'); 
     var myCodeMirror = CodeMirror.fromTextArea(textarea,  
      { 
      onUpdate:codemirrorcallback, 
      }); 
     // myCodeMirror.refresh(); ? is this an option? 
    }); 
</script> 

एक काम संपादक है कि सामग्री की बचत होती है और पाठ क्षेत्र के अंदर सहेजी गई सामग्री को प्रदर्शित करता है, लेकिन केवल यह प्रदर्शित करता है उपयोगकर्ता संपादन शुरू होता है के बाद उत्पादन इस। इससे पहले यह सिर्फ खाली है।

कोई भी मदद, यहां तक ​​कि केवल लिंक की अत्यधिक सराहना की जाएगी। धन्यवाद दोस्तों!

अद्यतन

myCodeMirror पर .refresh कॉलिंग Uncaught TypeError: Cannot call method 'focus' of undefined

उत्तर

2

के क्रोम कंसोल में एक त्रुटि प्रिंट कर रहा है आप CodeMirror संस्करण 2 + का उपयोग कर रहे हैं, तो आप CodeMirror.refresh() कॉल कर सकते हैं। documentation on refresh() देखें।

नोट: यह CodeMirror उदाहरण और नहीं तत्व पर बुलाया जाना चाहिए। देखें https://stackoverflow.com/a/5377029/526741

9

यदि यह हो रहा है तो आपको वास्तव में refresh() को अपने कोडमिरर उदाहरण पर कॉल करने की आवश्यकता है। लेकिन अंतरिक्ष बंदरों की वजह से आप एक समय समाप्ति में ताज़ा कॉल रैप करने के लिए की आवश्यकता होगी:

var editor = CodeMirror.fromTextArea(yourSourceDOM, { lineNumbers:true }) 
setTimeout(editor.refresh, 0) 

यह बहुत नहीं है, लेकिन यह मेरे लिए इसे हल।

+0

मुझे एक ही समस्या थी और यह ठीक करने लग रहा था। क्या आपको पता है कि यह क्यों काम करता है? – Sarumanatee

+0

स्पेस बंदर मुझे सेटटाइमआउट का उपयोग करने की अनुमति नहीं देते हैं। इसे हटाने के लिए मेरे लिए काम किया। – Tk421

+1

किसी भी समय आपको 'सेटटाइमआउट' या "इसे काम करने के लिए" के समान उपयोग करना होगा, यह ज़ल्गो जारी करने वाले सिंक बनाम एसिंक एपीआई के कारण _usually_ (इस मामले में निश्चित रूप से नहीं पता) है। यहां इसके बारे में अधिक जानकारी: http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony – papercowboy

3

, कोड दर्पण 5.14.2 का उपयोग करता है, तो आप को ताज़ा स्पष्ट रूप से आप इसे ठीक से लागू करने की (this question देखें) ख्याल रखना चाहिए, लेकिन यह सबसे आसानी से CodeMirror साथ नियंत्रित किया जाता है autorefresh add on की आपूर्ति की।

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