Динамическое копирование контроллера
Есть приложение, визуальный редактор на CKEditor.
К кнопкам, привязал функции, которые я описал в контроллере. При клике, нужно вставить еще одно окно с тем же функционалом. Нужно чтобы для каждого созданного окна эти функции работали. Как я понимаю нужно более универсальный контроллер делать, или другим способом. Буду рад прочитать умные мысли от тех кто достаточно хорошо знаком с ангуляром |
Добавь на страницу ngRepeat массива с объектами редакторов, по кнопке добавляй новый объект в массива.
Пример CKEditor + AngularJS Как интегрировать ckEditor в AngularJS |
Спасибо за ответ.
Я так понимаю при копировании объекта редактора, все айдишники также будут меняться. Пока что нашел решение, при клике заново комплить редактор. Но получается много косяков, потому что кнопки на последующих редакторах работают только к первому окну, в итого много чего в ручную исправлять и писать нужно. redactor.controller('myCKEditor', function ($scope,$compile) { $scope.createRedactorPage = function() { idCnt++; var redactorPage = $("#bd-wrapper").closest('tbody').clone(); redactorPage.find("#bd-wrapper").attr('id', 'bd-wrapper' + idCnt); $("#module-pages tbody").after( $compile(redactorPage) ($scope) ); } }); В любом случае попробую еще по вашему примеру сделать. Опишу что получилось |
Все таки решил заново компилировать контент, так как редактор написан в ручную, и нету объекта которой бы его создавал.
Решил проблему следующим образом. Сначала клонирую элемент, при его вставке в дом, инкрементирую все важные айдишники, не важные поменял на классы. Также в редакторе есть канвас, использую библиотеку fabric.js, при вставке новой страницы я также создаю новый канвас объект и пушу его в масив, куда собираются все его объекты, потом при клике отлавливаю секцию в которой у меня дата с инкрементным индексом, по етому индексу я указываю ключ в масиве где лежит нужная мне канва. |
Часовой пояс GMT +3, время: 22:36. |