Угловая директива - Как вызвать метод сохранения в контроллере при нажатии кнопки сохранения TinyMCE

0

Я использую угловую директиву TinyMce для включения редактирования Rich Text в моем приложении angularjs. https://github.com/angular-ui/ui-tinymce

Директива работает так, как ожидалось. Но я хотел интегрировать плагин сохранения, который позволит нам вызвать пользовательские функции сохранения. https://www.tinymce.com/docs/plugins/save/

Я попытался передать функцию в угловом контроллере в качестве функции обратного вызова с помощью следующей опции инициализации save_onsavecallback: function() {console.log("Сохранено"); } }

Пример кода следующим образом (подумайте, что у меня есть очень большой объект init, определенный ранее в моем приложении с включенным плагином сохранения)

angular.module("app").controller('editpageContentController', ['$scope', 'pagesDataService', '$routeParams', 'toaster', 'tinymceGlobalOptions',
    function ($scope, pagesDataService, $routeParams, toaster, tinymceGlobalOptions) {
        tinymceGlobalOptions.save_onsavecallback = function () { $scope.submit(); }
        $scope.tinymceOptions = tinymceGlobalOptions;
        $scope.pgContent = {
            pagePropertiesId: $routeParams.id,
            pageTitle: "",
            pageContent: ""
        }

        pagesDataService.getPageContent($scope.pgContent.pagePropertiesId).then(function (data) {
            $scope.pgContent = data;
        }, function (error) {
            toaster.pop('error', "Page load failed", error);
        });

        $scope.submit = function () {
            if ($scope.frmEditPageContent.$valid) {
                pagesDataService.savePageContent($scope.pgContent).then(function (data) {
                    if (data)
                        toaster.pop('success', "Sucess", "Page saved successfully.");
                }, function (error) {
                    toaster.pop('error', "Failure", error);
                });
            }
        }
    }
]);

Не уверен, могу ли я вызвать $ scope.submit() в функции обратного вызова. (Я попробовал, это не сработало, так как обратный вызов вообще не запускался)

Я не видел никаких ошибок, зарегистрированных в консоли.

  • 0
    Когда у вас только что был console.log('Saved'); - это сработало?
  • 0
    Нет, это не так. Событие не было вызвано вообще.
Показать ещё 2 комментария

1 ответ

2
Лучший ответ

Найдено 2 проблемы:

  • Мне пришлось добавить config save_enablewhendirty: false, к настройкам по умолчанию
  • Я изменил data-ng-controller="testController as tc" на data-ng-controller="testController" потому что вы не использовали controllerAs в своем приложении.

Рабочий пример: https://plnkr.co/edit/IbnLKsFl6YMXQxNU0RgN?p=preview

  • 0
    save_enablewhendirty при значении false работает. Не уверен, почему это не сработало, когда это правда. Это ошибка? или ожидаемый результат? Спасибо, я всегда хотел, чтобы кнопка сохранения работала, чтобы я мог изменять текущие изменения содержимого из Tiny MCE. Большое спасибо.
  • 0
    Я думаю, это потому, что директива tiny-mce не устанавливает поле как «грязное». Возможно, вам нужно создать <form> или вручную установить поле как грязное ( docs.angularjs.org/api/ng/type/form.FormController )
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню