मैं दो भागों के साथ CkEditor5 में एक विजेट बनाने की कोशिश कर रहा हूँ:

1) एक सूत्र के सादे पाठ संस्करण के लिए एक इनपुट (जो मैं मॉडल में और गेटडाटा पर सहेजना चाहता हूं)

2) काटेक्स के साथ प्रदान किए गए उस टेक्स्ट फॉर्मूला का लाइव पूर्वावलोकन (वास्तव में संपादक में क्या प्रदर्शित किया जाना चाहिए)।

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

यहां वह कोड है जिसका उपयोग मैं अपने तत्वों को सम्मिलित करने के लिए करता हूं (यह एक कस्टम बटन तक वायर्ड है):

function createFormula( writer, editor ) {
    const formula = writer.createElement('formula');
    const formulaInput = writer.createElement('formulaInput');
    const formulaPreview = writer.createElement('formulaPreview');
    let formulaInputValue = null;

    editor.model.document.on('change:data', (eventInfo) => {

      if (formulaInput && formulaInput._children && formulaInput._children._nodes && formulaInput._children._nodes[0]) {
        let newValue = formulaInput._children._nodes[0]._data;

        if(formulaInputValue !== newValue) {
            formulaInputValue = newValue;
            writer.insertText(formulaInputValue, formulaPreview);
        }

      }


    });


    writer.append( formulaInput, formula );
    writer.append( formulaPreview, formula );

    return formula;
}

हालांकि लेखक.insertText Editor.model.document.on('change:data') के अंदर प्रकट होता है, मुझे एक त्रुटि संदेश मिलता है:

Uncaught CKEditorError: writer-incorrect-use: Trying to use a writer outside the change() block

मैं एक तत्व में परिवर्तनों को सुनने और दूसरे में सामग्री डालने के कार्य को पूरा करने के तरीके के लिए स्टम्प्ड हूं। मैंने देखा है कि तत्वों से जुड़ा एक 'change' इवेंट है , लेकिन यह एक वास्तविक तरीका नहीं है जिसका उपयोग कोई तत्वों पर परिवर्तनों को सुनने के लिए कर सकता है। यदि document.on('change:data') को परिवर्तन ब्लॉक के रूप में नहीं गिना जाता है, तो क्या करता है? क्या सुनने का कोई बेहतर तरीका है? क्या इसके कोई उदाहरण हैं? मैं CkEditor5 डॉक्स और अन्य प्लगइन्स के माध्यम से आ रहा हूं, लेकिन मैंने किसी भी उपयोगी उदाहरण की पहचान नहीं की है।

0
ansorensen 1 जून 2019, 02:39

1 उत्तर

सबसे बढ़िया उत्तर