Все просто - делаете 5 модулей, которые зависимостями выносите в один - главный.
У каждого модуля свой функционал, свои директивы, свои контроллеры.
Если нужна связь между главным контроллером и дочерними через общие объекты - просто объявляете эти объекты в главном, а используете в дочерных(принцип замыкания по сути).
Если нужны общие объекты между директивами, используете изолированный scope у директив, указывая какие именно объекты будут поданы наружу.
Все.
вместо того чтобы делать так $scope.controller1.variable. (и так для всех 5 контроллеров), почитайте о ng-controller="SettingsController as settings", так логика будет в разных контроллерах но представление можно сделать одно.
посмотрите в консоль - при смене цвета - грузятся все новые картинки в разных позах.
то есть либо на сервере генерят разные картинки со всеми цветами,
либо, что вероятнее, их просто в фотошопе перекрасили и все.
в данном случае это точно НЕ делается на фронтенде
У вас рекурсивное ограничение самого angular, по-умолчанию TTL == 10, есть 2 решения данной проблемы: 1 вариант: Если известна глубина рекурсии - необходимо установить TTL в точное значение. 2 вариант: Если глубина неизвестна, задать такой TTL, который по вашему мнению вы не сможете превысить.
В обоих случаях TTL устанавливается примерно так:
Попробуй добавить 3-й параметр со значением true в вызов $watch.
UPD
Может просто рассылать уведомления при изменении? В функции edit_node сделать $scope.$emit / $scope.$broadcast (смотря куда по иерархии нужно их отсылать).
По поводу необходимости выхода за пределы автономного плагина - в этом нет необходимости, CPT может быть непубличным и доступным только в админке + через ваш плагин в вашем темплейте, без роутинга и тд.
Что касается всего остального - да, вы делаете очень неэффективно, и, я б даже сказал криво. Без обид. Сейчас уже валюсь отдыхать, завтра постараюсь найти минутку и написать подробно что не так и куда копать (сделаю апдейт этого ответа).
Похожую ситуацию я описывал тут.
У Upwork ужаснейший саппорт. Долбите их запросами, пробуйте звонить\писать везде где только можно.
Они очень долго шевелятся, и нужно предпринимать активные действия, а то деньги могут зависнуть на пару месяцев.
Ситуация неприятная, терпения вам!
Философский вопрос "Что делать":) Вы уже сами знаете ответ. Если еще остались силы и желание, решайте вежливо вопрос с сапортом, пробуйте описать проблему на официальной страничке апворка в соц. сетях, пусть разбираются публично. Если нет никакого желание "бодаться" с холодной тех. поддержкой, ищите другие варианты работы, другие биржи, ищите заказчиков напрямую, без бирж.
Могу посоветовать арендовать VPS у этих ребят: nanovz.com
Да, иногда бывают падения, но за 3 евро в год....это простительно)
Ресурсов хватает, чтобы гонять VPN.
Для правильного вопроса надо знать половину ответа
SELECT `p`.`title`, GROUP_CONCAT(`t`.`tag` SEPARATOR ',')
FROM `page_tag` AS `pt`
JOIN `tag` AS `t` ON `t`.`id` = `pt`.`tag_id`
JOIN `pages` AS `p` ON `p`.`id` = `pt`.`page_id`
GROUP BY `p`.`id`
получается, что все стили у меня идут как .projectPrefix div{}, .projectPrefix .title{} и тп.
соответственно, вывод плагина нужно обернуть в div.projectPrefix.
У вас захламлена таблица wp_options, там видимо десятки тысяч записей с флагом autoload = yes. При начале загрузки WordPress вытягивает ВСЕ опции с этим флагом. Вот вам и тормоза, и адски большой расход памяти - 90Мб, Карл!
1. Почистить таблицу от мусора
2. Посмотреть какие опции с autoload = yes и нужны ли они
3. Понадобится рефакторинг того говнокода, который эти опции создает
Бонус: Нужен объектный кеш на сервере (Memcached / Redis)
Websocket будет быстр, но если его у вас нет в проекте - не факт, что рационально.
На клиент отдавать 200к не вариант, обвалится на большинстве компов.
А так, первое что приходит в голову - ajax с блокировкой всех запросов, кроме последнего. То есть ввели 1 символ - пошел запрос, но если до получения ответа был уже введен второй символ или изменился первый - первую операцию прерываем, а вторая пошла.