Angular指令 - 单击“TinyMCE保存”按钮时如何在控制器中触发save方法

时间:2016-05-29 16:07:27

标签: javascript jquery angularjs

我使用TinyMce angular指令在angularjs应用程序中启用Rich文本编辑。 https://github.com/angular-ui/ui-tinymce

该指令按预期工作。但我想整合save插件,这将允许我们调用自定义保存功能。 https://www.tinymce.com/docs/plugins/save/

我尝试通过以下init选项将角度控制器中的函数作为回调函数传递 save_onsavecallback:function(){console.log(' Saved'); }

示例代码如下(考虑到我的应用程序前面定义了一个非常庞大的init对象,其中包含 save 插件)

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()..(我确实尝试过它没有工作,以及回调根本没有被触发)

我没有在控制台中看到任何错误。

1 个答案:

答案 0 :(得分:2)

发现2个问题:

  • 我必须将配置save_enablewhendirty: false,添加到默认选项
  • 我将data-ng-controller="testController as tc"更改为data-ng-controller="testController",因为您在应用中未使用controllerAs

一个工作示例:https://plnkr.co/edit/IbnLKsFl6YMXQxNU0RgN?p=preview