Javascript 角度指令-单击“保存”按钮时,如何在控制器中触发保存方法

Javascript 角度指令-单击“保存”按钮时,如何在控制器中触发保存方法,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我使用TinyMce angular指令在angularjs应用程序中启用富文本编辑。 该指令按预期工作。但是我想集成save插件,它允许我们调用定制的save函数。 我试图通过以下init选项将angular控制器中的函数作为回调函数传递 save_onsavecallback:function(){console.log('Saved');} 示例代码如下(假设我在应用程序前面定义了一个非常大的init对象,其中包含save插件) 不确定是否可以在回调函数中调用$scope.submit

我使用TinyMce angular指令在angularjs应用程序中启用富文本编辑。

该指令按预期工作。但是我想集成save插件,它允许我们调用定制的save函数。

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

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

不确定是否可以在回调函数中调用$scope.submit()。。(我试过了,它不起作用,而且回调根本没有触发)

我没有看到控制台中记录的任何错误。

发现2个问题:

  • 我必须在默认选项中添加config
    save\u enablewhendirty:false,
  • 我将
    data ng controller=“testController as tc”
    更改为
    data ng controller=“testController”
    ,因为您没有在应用程序中使用
    controllera
工作示例:

发现了两个问题:

  • 我必须在默认选项中添加config
    save\u enablewhendirty:false,
  • 我将
    data ng controller=“testController as tc”
    更改为
    data ng controller=“testController”
    ,因为您没有在应用程序中使用
    controllera

一个工作示例:

当您刚刚拥有
console.log('Saved')-成功了吗?没有。事件根本没有触发。这是一个plnkr示例。我添加了我的答案-如果它在您刚刚拥有
console.log('Saved')时对您有效,请接受它-成功了吗?没有。事件根本没有触发。这是一个plnkr示例。我添加了我的答案-如果它对您有效,请接受它。当设置为false时,Save_enablewhendirty将起作用。我不知道这是真的为什么不起作用。那是虫子吗?还是预期的结果?谢谢,我一直想让“保存”按钮工作,这样我就可以在微型MCE中更改正在进行的内容更改。非常感谢。我想这是因为
tiny mce
的指令没有将字段设置为“dirty”。也许您需要创建一个
,或者手动将字段设置为dirty(),谢谢您的解释。我的实际应用程序中已经有一个表单标签。看起来像是个bug。@DavidChelliah我想你是对的-这些是内容更改后textarea上的类:ng未触及ng有效ng不为空ng脏ng有效解析。不动产看起来是不对的。我已更新了我的初始问题日志。设置为false works时,保存启用WhenDirty。我不知道这是真的为什么不起作用。那是虫子吗?还是预期的结果?谢谢,我一直想让“保存”按钮工作,这样我就可以在微型MCE中更改正在进行的内容更改。非常感谢。我想这是因为
tiny mce
的指令没有将字段设置为“dirty”。也许您需要创建一个
,或者手动将字段设置为dirty(),谢谢您的解释。我的实际应用程序中已经有一个表单标签。看起来像是个bug。@DavidChelliah我想你是对的-这些是内容更改后textarea上的类:ng未触及ng有效ng不为空ng脏ng有效解析。不动产看起来是不对的。我已更新了我的初始问题日志。
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);
                });
            }
        }
    }
]);