我在我的Angular应用程序中使用tinyMce(本机版本,不是angular ui指令). tinyMce转换为html编辑器的文本区域位于局部视图中(我使用角度路由).问题在于,应用程序第一次访问部分视图时,一切正常,但是下次用户选择此视图时,文本不会转换为tinyMce编辑器.
所以我的问题是,每次用户访问部分代码时,如何使tinyMce初始化代码生效?
我看到了类似的问题,但不了解任何解决方案.
这是我的initialMCE代码,它位于部分视图的控制器中:
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;
}
});
希望这会有所帮助