繁体   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