2017-06-01 3 views
1

Ich versuche den Inhalt von tinymce editor dynamisch zu ändern. selbst diese Schritte funktionieren nicht. Eigentlich möchte ich Inhalte auf Ajax-Erfolg stellen, aber da es nicht funktioniert, kann ich nicht weiter machen.Wie setze ich ynymce Inhalt dynamisch ein

Ich erhalte Typ Fehler tinemce.get() ist null und tinymce.activeEditor ist null erros

<textarea style="height:700px" name="proposal" id="proposal" > 
         hi 
</textarea> 
<script> 
    $(document).ready(function() { 
         tinymce.init({ 
          selector: "#proposal", 
          height: 250, 
          theme: "modern", 
          plugins: [ 
          "autoresize advlist autolink lists link image charmap print preview hr anchor pagebreak", 
          "searchreplace wordcount visualblocks visualchars code fullscreen", 
          "insertdatetime media nonbreaking save table contextmenu directionality", 
          "emoticons template paste textcolor colorpicker textpattern imagetools codesample toc" 
          ], 
          toolbar1: "undo redo | insert | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | print preview media | forecolor backcolor emoticons | codesample", 
          image_advtab: true, 
          content_css: [ 
          "https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css", 
          ], 


         }); 
         var content = "<p>Hello World </p>"; 
         tinyMCE.get("proposal").setContent(content);//not working 
         tinyMCE.activeEditor.setContent(content);//not working 

        }); 

<script>  

Antwort

0

Ihre Anrufe tinyMCE.get("proposal") und tinyMCE.activeEditor passieren wahrscheinlich vor der Editor tatsächlich instanziiert wird. Die Methode TinyMCE init() benötigt Zeit, aber Sie rufen diese beiden Methoden direkt nach der init() auf, so dass der Editor wahrscheinlich noch nicht initialisiert ist.

Der Editor verfügt über ein init-Ereignis, das Sie verwenden können, um zu wissen, wann der Editor vollständig initialisiert wird, und dann können Sie die Editor-APIs verwenden. Sie können so etwas in Ihrer TinyMCE-Konfiguration setzen:

tinymce.init({ 
    selector: "#proposal", 
    ... 
    setup: function (editor) { 
     editor.on('init', function() { 
      var content = "<p>Hello World </p>"; 
      editor.setContent(content); 
     }); 
    } 
}); 
+0

Thanks you .... Die Antwort liegt in der Nähe .aber wird es außerhalb der init arbeiten? Wie ich in meiner Frage erwähnt habe, möchte ich es in einem Ajax Erfolg verwenden –

+0

In der Tat können Sie - nur wissen, dass Sie keine TinyMCE APIs aufrufen können, bis der Editor vollständig geladen ist. In Ihrem Beispiel werden keine AJAX-Anrufe angezeigt. Daher wurde meine Antwort auf Ihr Beispiel zugeschnitten. Sie können die 'init' verwenden, um einen AJAX-Aufruf auszulösen, um Daten abzurufen, oder Sie können Daten auf andere Weise abrufen - stellen Sie lediglich sicher, dass der Editor initialisiert ist, bevor Sie versuchen, seine APIs zu verwenden. –

0

In TinyMCE 4 Sie können es versuchen:

// Sets the HTML contents of the activeEditor editor 
tinymce.activeEditor.setContent('<span>some</span> html'); 

// Sets the raw contents of the activeEditor editor 
tinymce.activeEditor.setContent('<span>some</span> html', {format: 'raw'}); 

// Sets the content of a specific editor (my_editor in this example) 
tinymce.get('my_editor').setContent(data); 

// Sets the bbcode contents of the activeEditor editor if the bbcode plugin was added 
tinymce.activeEditor.setContent('[b]some[/b] html', {format: 'bbcode'}); 

Lesen Sie mehr über Tinymce