Я надеюсь, что я достаточно ясно выразил эту просьбу о помощи, так как это сложно объяснить, и я не могу опубликовать здесь весь код. Я скачал код, позволяющий использовать TinyMCE в NgRepeat с AngularJS:
angular.module('ui.tinymce', [])
.value('uiTinymceConfig', {})
.directive('uiTinymce', ['uiTinymceConfig', function (uiTinymceConfig) {
uiTinymceConfig = uiTinymceConfig || {};
var generatedIds = 0;
return {
require: 'ngModel',
link: function (scope, elm, attrs, ngModel) {
var expression, options, tinyInstance;
// generate an ID if not present
if (!attrs.id) {
attrs.$set('id', 'uiTinymce' + generatedIds++);
}
options = {
// Update model when calling setContent (such as from the source editor popup)
setup: function (ed) {
ed.on('init', function (args) {
ngModel.$render();
});
// Update model on button click
ed.on('ExecCommand', function (e) {
ed.save();
ngModel.$setViewValue(elm.val());
if (!scope.$$phase) {
scope.$apply();
}
});
// Update model on keypress
ed.on('KeyUp', function (e) {
ed.save();
ngModel.$setViewValue(elm.val());
if (!scope.$$phase) {
scope.$apply();
}
});
},
mode: 'exact',
elements: attrs.id
};
if (attrs.uiTinymce) {
expression = scope.$eval(attrs.uiTinymce);
} else {
expression = {};
}
angular.extend(options, uiTinymceConfig, expression);
setTimeout(function () {
tinymce.init(options);
});
ngModel.$render = function () {
if (!tinyInstance) {
tinyInstance = tinymce.get(attrs.id);
}
if (tinyInstance) {
tinyInstance.setContent(ngModel.$viewValue || '');
}
};
}
};
}]);
var gwApp = angular.module('gwApp', ['ui.tinymce']);
Я не очень понимаю этот код, но изначально он работает нормально. Моя страница начинается со списка сообщений. Я нажимаю «Показать ответ» для первого сообщения, и с помощью NgSwitch становятся видны несколько ответов (вложенный NgRepeat). Я отправляю новое ответное сообщение (текст ответа вводится с помощью tinymce), используя службу RESTful API и вызов http (слишком много кода для размещения здесь). Затем, после нажатия кнопки отправки для нового ответного сообщения, NgSwitch неожиданно срабатывает снова, чтобы ответы больше не отображались. Когда я снова раскрываю ответы, tinymce снова становится обычным текстовым полем, а надлежащего редактора больше нет.
Я знаю, что это не очень ясно, но я надеюсь, что кто-то сможет понять то, что я написал, и поможет мне решить эту проблему.