如何在 CKEditor 自定义插件中访问 AngularJS service/factory

How to access AngularJS service/factory in CKEditor custom plugin

我在 AngularJS 应用程序中使用 CKEditor 4。我有一个 CKEditor 指令,它设置编辑器选项

angular.module('someMod', []).directive("ckeditor", CKEditor).factory('someFactory',someFactory);
...etc...
CKEditor.$inject = ["someFactory"];
function CKEditor(someFactory) {
...and in the link function the editor options includes...
extraPlugins: 'myplugin'

现在,如果我将自定义插件定义放入 link 函数中,它可以正常工作,因为它可以毫无问题地引用 someFactory。但我想将所有 "myplugin" 代码放入一个单独的插件文件中。这工作正常,除非它试图引用 someFactory 失败。

编辑 ------ 工厂构造如下

someFactory.$inject = ['$http', '$log', ...];
function someFactory($http, $log, ...) {
    return {
        someFunction: someFunction,
        ...
    };
    function someFunction() {
        // do some stuff
        return 1;
    }

有人知道如何让 CKEditor 插件可以使用 someFactory 吗?

工厂必须return一个对象。如果未正确设置,可能会导致您遇到的问题。需要更完整的示例才能进行故障排除。

我找到了一种方法来做到这一点。我声明了一个全局变量,如

var angularObject = {};

然后在 CKEditor 指令 link 函数中添加

angularObject = someFactory

创建对注入指令的工厂的引用。然后在插件代码中我可以这样说

angularObject.someFunction