Nano Hash - криптовалюты, майнинг, программирование

TinyMCE и AngularJS - не загружаются после NgSwitch

Я надеюсь, что я достаточно ясно выразил эту просьбу о помощи, так как это сложно объяснить, и я не могу опубликовать здесь весь код. Я скачал код, позволяющий использовать 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 снова становится обычным текстовым полем, а надлежащего редактора больше нет.

Я знаю, что это не очень ясно, но я надеюсь, что кто-то сможет понять то, что я написал, и поможет мне решить эту проблему.

26.10.2014

  • Исправление - я использую ngShow, а не ngSwitch 26.10.2014

Ответы:


1

У меня была такая же проблема с использованием ng-switch и ng-show, поэтому я добавил:

scope.$watch('onHidden()',function(){ tinymce.editors = [] });

после функции setTimeout.

Также замените

ed.on('init',function(args){  ngModel.$render(); });

с

ed.on('init',function(args){  ed.setContent(ngModel.$viewValue); });

и удалите функцию $render.

Это ссылка на рабочий код в JsFiddle

06.08.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..