簡體   English   中英

tinyMce在第二次訪問角度局部視圖時未初始化

[英]tinyMce not initialized upon second visit to angular partial view

我正在使用tinyMce(原生的,而不是角度ui指令)和我的角度應用程序。 tinyMce轉換為html編輯器的文本區域位於局部視圖中(我使用的是有角度的路徑)。 問題是,應用程序第一次訪問局部視圖時一切正常,但是下次用戶選擇此視圖時,文本不會轉換為tinyMce編輯器。

所以我的問題是每次用戶訪問部分時如何使用tinyMce初始化代碼?

我看到了類似的問題,但沒有理解任何解決方案....

這是我的init tinyMCE代碼,它位於局部視圖的控制器中:

angular.module('sam').controller('groupMailController', ['$http', '$log', '$routeParams', 'User', function($http, $log, $routeParams, User) {
    tmp = this;
    //a factory which passes paramteres cross controllers
    this.user = User;
    //get list of building objects
    this.availableBuildings = _.values(this.user.buildings);

    $log.log('init meee !!');
    tinymce.init(
        {selector:'textarea',
        directionality : 'rtl',
        plugins: ["advlist autolink lists link image charmap print preview anchor",
        "searchreplace visualblocks code fullscreen",
        "insertdatetime media table contextmenu paste directionality"], 
        toolbar: "undo redo | styleselect | bold italic | link image | alignleft aligncenter alignright | ltr rtl"});
}]);

對於那些可能遇到同樣問題的人來說,這是一個遲到的答案。 問題是,tinymce仍然保留編輯器的舊實例並再次初始化它將無法正常工作。 因此,解決方案包括在范圍銷毀事件上刪除該實例。

  $scope.$on('$destroy', function() {
    var tinyInstance = tinymce.get('#myTextArea');

    if (tinyInstance) {
      tinyInstance.remove();
      tinyInstance = null;
    }
});

希望這會有所幫助

您可以在調用init()之前刪除當前的活動編輯器。

if (tinyMCE.activeEditor != null)
  tinymce.EditorManager.execCommand('mceRemoveEditor', true, 'myTextArea');

tinymce.init({
  selector: "#myTextArea"
});

或者您可以使用TinyMCE Angular插件。 這是信息: https//github.com/angular-ui/ui-tinymce

在路由時更改textarea的id,強制tiny-mce angular模塊刷新並重新創建編輯器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM