2013-07-08 68 views
1

我遇到試圖使用TinyMCE的API中的jsfiddle角指令內的問題。 這裏是example TinyMCE的編輯器初始化就好了,有一個在瀏覽器控制檯沒有錯誤。但是如果我嘗試獲取tinymce編輯器的實例,我會得到'undefined'。 現在的問題是:爲什麼tinymce.get(id);導致undefined的jsfiddle + TinyMCE的+ AngularJS

HTML:

<div ng-app="myApp"> 
    <div ng-controller="MainCtrl"> 
     <my-editor ng-model="text"></my-editor> 
    </div> 
</div> 

JS:

var app = angular.module('myApp', []); 

app.controller('MainCtrl', function($scope) { 

}); 
app.directive('myEditor', function() { 
    var uniqueId = 0; 
    return { 
     restrict: 'E', 
     require: 'ngModel', 
     scope: true, 
     template: '<textarea></textarea>', 
     link: function (scope, element, attrs, ngModel) { 
      var id = 'myEditor_' + uniqueId++; 
      element.find('textarea').attr('id', id); 
      tinymce.init({ 
       selector: '#' + id 
      }); 

      var editor = tinymce.get(id); 
      alert(editor); **// why is this undefined?** 
     } 
    } 
}); 

我也打在的jsfiddle的框架&擴展部分選項。但沒有成功。

+0

的可能重複[等待TinyMCE的加載(http://stackoverflow.com/ question/7408559/wait-for-tinymce-to-load) – Flint

回答

2

您正在處理的問題,就是當你在做你的警報的元素沒有被添加到DOM。 (看在Firebug的HTML)

<my-editor ng-model="text" class="ng-scope ng-pristine ng-valid"> 
    <textarea id="myEditor_0"></textarea> 
</my-editor> 

放置一個setTimeout內的警報可以讓你alert()對象。

setTimeout(function(){ 
    var editor = tinymce.get(id); 
    alert(editor); // why is this undefined? 
},0); 
0

此外答案馬克給:

您將需要等待編輯器獲得initalized,且已可使用。 爲此,您可以使用onInit tinymce處理程序。當編輯器準備就緒時,onInit會被觸發。

1

正確的方法去是設置在init_instance_callback optiontinyMCE.inittinymceOptions如果您正在使用angular-ui-tinymce

$scope.tinymceOptions = { 
    init_instance_callback : function(editor) { 
    MyCtrl.editor=editor 
    console.log("Editor: " + editor.id + " is now initialized."); 
    editor.on('Change', function(editor, e) { 
     MyCtrl.func() 
    });    
} 
+0

非常感謝,瀏覽互聯網關於獲取這個編輯器的角度來調用uploadImages函數,並花費了大量的時間 – rohanagarwal