2012-07-05 9 views
11

मैं वर्तमान में एक निर्भरता के रूप में TinyMCE स्रोत में गुजर रहा हूं, और फिर tinyMCE.init ({}) पर कॉल कर रहा हूं; लेकिन यह TinyMCE शुरू नहीं कर रहा है। जब मैं console.log को छोटा करता हूं, तो यह एक TinyMCE ऑब्जेक्ट देता है। नीचे कोड नमूना:मैं Requ.js के साथ TinyMCE को कैसे कार्यान्वित कर सकता हूं?

define([ 
'jQuery', 
'Underscore', 
'Backbone', 
'TinyMCE' 
], function($, _, Backbone, tinyMCE) { 

     tinyMCE.init({ 
      mode: "exact", 
      elements: $('textarea'), 
      theme: "advanced", 
      theme_advanced_toolbar_location: 'top', 
      theme_advanced_buttons1: 'bold,italic,underline,bullist,numlist,link,unlink', 
      theme_advanced_buttons2: '', 
      theme_advanced_buttons3: '', 
      theme_advanced_toolbar_align: 'left', 
      plugins: 'paste,inlinepopups', 
      width: '100%', 
      height: textarea.attr('data-height'), 
      oninit: function() { 
       console.log('TargetTD :'); 
       console.log(targetTD); 

      } 
     }); 
    } 
}); 

उत्तर

6

एक ही समस्या थी। मेरा समाधान TinyMCE की बजाय TinyMCE jQuery प्लगइन का उपयोग करना था। इस तरह यह ठीक काम करता है।

requirejs.config({ 
    baseUrl: "js", 
    paths: { 
     tinyMCE: 'libs/tinymce/tiny_mce' 
    }, 
    shim: { 
     tinyMCE: { 
      exports: 'tinyMCE', 
      init: function() { 
       this.tinyMCE.DOM.events.domLoaded = true; 
       return this.tinyMCE; 
      } 
     } 
    } 
}); 

requirejs([ 
    'tinyMCE' 
], function (tinyMCE) { 
    console.log(tinyMCE); 

    // your code here 
}); 

संपादित:

define(['jquery', 'tiny_mce/jquery.tinymce'], function ($) { 
    $('textarea').tinymce({ 
     script_url : 'js/tiny_mce/tiny_mce.js', 
     theme : 'advanced', 
     theme_advanced_buttons1 : 'fontselect,fontsizeselect,forecolor,bold,italic,underline,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,removeformat,indent,outdent,numlist,bullist,copy,paste,link', 
     theme_advanced_buttons2 : '', 
     theme_advanced_buttons3 : '', 
     theme_advanced_toolbar_location : 'top', 
     theme_advanced_toolbar_align : 'left' 
    }); 
}); 
+3

मैं दृढ़ता से TinyMCE jQuery निर्माण का उपयोग नहीं करने की सलाह हर कोई, यह कई कमियां हैं और परेशानी का एक स्रोत है, यह विशेष रूप से धीमी है जब यह आता है:

var FormTextArea = Backbone.View.extend({ template : _.template('<%=value%>'), tagName: 'textarea', className: "control-group", render: function(){ this.$el.html(this.template(this.model.toJSON())); setTimeout(_.bind(this.initMCE, this), 1); return this; }, initMCE: function(){ tinymce.init({selector: 'textarea'}); } }); var v = new FormTextArea({ model: new Backbone.Model({value: '<h2>Heading 2</h2><p>A paragraph here</p>'}) }); $('body').append(v.render().el); 

यहाँ एक jsfiddle है कुंजीपटल इनपुट हैंडलिंग के लिए! – Thariama

31

आप requirejs 2.1.0 या उच्चतर के लिए 'शिम' का उपयोग कर सकते हैं, नीचे मुख्य स्क्रिप्ट का उदाहरण देख मैं टिप्पणी में नीचे से iimuhin के स्निपेट जोड़ा है। यह इसके बिना काम नहीं कर रहा है; मैंने इसे जोड़ा क्योंकि भविष्य के खोजकर्ता जोड़े गए आईई सिरदर्द से परहेज करने की सराहना करेंगे।

+14

यह tinyMCE लोड करेगा लेकिन tinyMCE.init संपादकों को नहीं बनाएगा। आपको लाइन की आवश्यकता होगी: 'this.tinyMCE.DOM.events.domLoaded = true;' इसे वापस करने से पहले। TinyMCE; '(tinyMCE 4.02b पर परीक्षण किया गया) –

+0

को सभी के अलावा संपादक निर्माण को लपेटने के लिए सेटटाइमआउट जोड़ना पड़ा इस। – user1323136

+0

कोई विचार है कि मैं सभी tinyMCE प्लगइन्स को एक बार में लोड करने के बारे में कैसे जा सकता हूं? – Paul

0

आप रीढ़ की हड्डी के दृश्य में सामान्य रूप से tinyMCE को लागू कर सकते हैं। लेकिन आपको तब तक इंतजार करना चाहिए जब तक कि tinyMCE प्रारंभ करने से पहले डोम में दृश्य का एल डाला नहीं जाता है। जावास्क्रिप्ट में, डीओएम में तत्व डालने पर पता लगाने का अब तरीका है। लेकिन जब रीढ़ की हड्डी का दृश्य प्रस्तुत किया जाता है (Backbone.View.render()), वर्तमान ब्राउज़र की प्रक्रिया के बाद तत्व डोम में डाला जाएगा। 1 मिलीसेकंड के साथ छोटे mce तत्व को आरंभ करने के लिए "setTimeout" का उपयोग करें (जो कि अगले ब्राउज़र की प्रक्रिया में कोड को निष्पादित करेगा)।

http://jsfiddle.net/pCdSy/10/

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

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