2012-01-03 9 views
12

के माध्यम से लोड करने के लिए कैसे करें मुझे cjeditor को requjs के माध्यम से लोड करने का प्रयास करने में समस्याएं आ रही हैं (मैंने मुख्य ckeditor जेएस फ़ाइल को अलग-अलग मॉड्यूल में परिवर्तित करने का प्रयास किया है, लेकिन इसने सभी नरक को तोड़ने का कारण बना दिया है) और इसलिए मैं अब यह देखने के लिए जांच कर रहा है कि ऐसा करने का एक बहुत ही आसान तरीका है जिसे मैंने याद किया है।cseditor को requjs

मुझे पता है कि requjs आपको सामान्य जेएस स्क्रिप्ट लोड करने की अनुमति देता है, इसलिए शायद ckeditor.js फ़ाइल को लोड करना (अन-संपादित, इसलिए यह अभी भी एक आईआईएफई/स्वयं निष्पादन समारोह है) - क्या यह आवश्यक है या यदि आप हैं मॉड्यूल लोड करने के लिए requjs का उपयोग करके, क्या पूरे प्रोजेक्ट को मॉड्यूल आधारित होने की आवश्यकता है?

किसी भी मदद की सराहना की।

सधन्यवाद, मार्क

उत्तर

-2

ठीक है, यह मैं अपने खुद के सवाल का जवाब यहां लगती है।

सीकेडिटर को मॉड्यूल में तोड़ने की कोशिश करने के बजाय मैंने केवल पूरी तरह से स्क्रिप्ट को लोड करने के लिए RequJs का उपयोग किया।

require(['require', 'dependancy-A', 'dependancy-B', 'dependancy-C'], function(require, A, B, C){ 

    // this = [object DOMWindow] 
    // CKEDITOR_BASEPATH is a global variable 
    this.CKEDITOR_BASEPATH = '/ckeditor/'; 

    require(['/ckeditor/ckeditor'], function(){ 
     // Code to create a new editor instance 
    }); 

}); 

`` `

+7

इस विधि मॉड्यूल की एक dependancy के रूप में CKEditor की सूची नहीं है, और RequireJS उपयोग नहीं करता है या तो CKEditor लोड करने के लिए, के बजाय वापस करने के लिए (की एक जोड़ी) गिरने JavaScript टैग सीकेएडिटर लोड करने के लिए। इसका मतलब है कि इस मॉड्यूल के चलते सीकेएडिटर लोड नहीं हो सकता है। –

26

वैकल्पिक रूप से, आप CKEditor वितरण फ़ाइलों के लिए सही क्रम में बातें, और उर्फ ​​उचित RequireJS मॉड्यूल नाम लोड करने के लिए एक RequireJS शिम बना सकते हैं।

इसका मतलब है कि आपका मॉड्यूल अभी भी घोषित करता है कि यह सीकेएडिटर पर निर्भर है, जो इसे जादू द्वारा दिखाए जाने से बहुत अच्छा है।

require.config({ 
shim: { 
    'ckeditor-jquery':{ 
     deps:['jquery','ckeditor-core'] 
    } 
}, 
paths: { 
    "jquery": '/javascript/jquery-1.7.1/jquery.min', 
    'ckeditor-core':'/javascript/ckeditor-3.6.4/ckeditor', 
    'ckeditor-jquery':'/javascript/ckeditor-3.6.4/adapters/jquery' 
} 
}); 

तो एक मॉड्यूल में आप CKEditor-jQuery पर (या CKEditor कोर उस बात के लिए, यदि आप jQuery एकीकरण की जरूरत नहीं है) निर्भर करते हैं और जानते हैं कि यह उपलब्ध हो जाएगा कर सकते हैं:

require(
[ 
    "jquery", 
    "ckeditor-jquery" 
], 
function(_jquery_) { 

    $('#editorContent2').ckeditor({ 
     customConfig : '', 
     skin:'office2003' 
    }); 
} 
} 
+0

धन्यवाद, यह पूरी तरह से काम किया। मुझे पता था कि जवाब इसे तैरने वाला था, लेकिन मैं यह सोचने के लिए बहुत आलसी था कि इसे ठीक से कैसे किया जाए। शुक्र है, मुझे नहीं करना था। –

+0

अभी भी मेरे लिए काम नहीं कर रहा है ... मुझे यह कहते हुए त्रुटि मिलती है कि निर्भरता पथ गलत हैं। कोई अन्य सहायक जानकारी जो आप मुझे दे सकते हैं? धन्यवाद – w3jimmy

+0

@ टॉम चिवरटन, आप सीएसएस को लोड करने के लिए कैसे प्राप्त करते हैं? –

1

ऐसा करने के लिए एक और तरीका है:

var require = { 
    "shim": { 
     "path/foo/ckeditor/ckeditor": { "exports": "CKEDITOR" } 
    } 
}; 

define(['moduleX', 'path/foo/ckeditor/ckeditor'], function (x, ckeditor) { 

    ckeditor.editor.prototype.fooFunc = function() { 

    }; 
});