Я использую CKEditor 4 в приложении AngularJS. У меня есть директива для 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'

Теперь, если я добавлю определение пользовательского плагина в функцию ссылки, он будет работать нормально, потому что он может ссылаться на someFactory без проблем. Но я хочу поместить весь код «myplugin» в отдельный файл плагина. И это прекрасно работает, за исключением случаев, когда он пытается сослаться на какой-то завод, но не работает.

Редактировать ------ Завод построен следующим образом

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

Кто-нибудь знает, как сделать someFactory доступным для плагина CKEditor?

0
nuander 30 Май 2019 в 00:09

2 ответа

Лучший ответ

Я нашел способ сделать это. Я объявляю глобальную переменную, как

var angularObject = {};

Затем в функцию ссылки директивы CKEditor я добавляю

angularObject = someFactory

Создать ссылку на фабрику, которая была введена в директиву. Тогда в коде плагина я могу сказать что-то вроде

angularObject.someFunction
0
nuander 7 Июн 2019 в 20:43

Фабрика должна вернуть объект. Если он не был правильно настроен, это может вызвать проблему, с которой вы столкнулись. Требуется более полный пример для устранения неполадок.

0
Mark Clark 4 Июн 2019 в 22:19
56368546