Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Изменение в построенном DOM
- В этой теме 47 ответов, 3 участника, последнее обновление 4 часа, 2 минуты назад сделано
manjey73.
-
АвторЗаписи
-
22.06.2026 в 14:28 #43999
MikhailМодераторЭто все работает с исходником svg из фейсплейта, не со страницей, на которую этот svg помещен.
args.component.dom — это доступ к конкретному элементу на веб-странице, а не к исходному скрипту.
22.06.2026 в 14:32 #44001
manjey73Участниктогда не копируйте код Разметки постоянно в DOM при (или перед) запуском domUpdated, раз args.component.dom это именно на web странице.
проверить же элементарно. Или опять у вас работает, а в 6.4.6 еще не поправлено?
иначе у меня и вопросов бы не возникло по данному поводу.
22.06.2026 в 14:36 #44002
manjey73УчастникТут на скрине видна группа svg
comp4-1symпо умолчанию в разметке она ПУСТА
Все, что вы в ней видите на скрине, создано в domCtreated.Оставляем пустой domUpdated и вся группа окажется пустой сразу же, после первой сработки domUpdated.
Что видно на последующем видео, которое я выложил. Сперва появляются линии внутри объекта и тут же все пропадает. Смотрим в консоль — группа пуста. Значит вся Разметка была обновлена из исходника фейсплейта.23.06.2026 в 08:32 #44006
manjey73Участникне проверял на Damper. Попробуйте в domCreated покрасить любой элемент в ядовитый цвет.
domUpdated оставьте пустым {}, чтобы он не запускал тот же скрипт и посмотрите результат в консоли на запущенной мнемосхеме.23.06.2026 в 19:12 #44019
MikhailМодератортогда не копируйте код Разметки постоянно в DOM
Кажется более-менее понятно, в чём проблема.
Рендерер компонента имеет свойство canUpdateDom, которое определяет, будет ли DOM полностью заменён на новый при обновлении или будут затронуты только свойства. Для компонента Разметка DOM полностью обновляется, поэтому в методе domUpdated нужно заново отрисовывать изменения.23.06.2026 в 19:27 #44020
manjey73УчастникИ после dataUpdated автоматом запускается domUpdated?
Кстати почему в dataUpdated не срабатывает console.log ? Больше там ничего нет.И вот выше написанное, это архи хреново. Потому что нужно изменить только скажем цвет одного элемента, надо полностью выполнять полностью скрипт и соответственно всю портянку, учитывать изменения и т.д.
Вместо простых функций в domUpdated — получили новое значение, отрисуй только этот элемент компонента, а не все целиком.-
Ответ изменён 2 недели, 2 дня назад пользователем
manjey73.
23.06.2026 в 19:30 #44022
manjey73Участникз.ы. добавить в скрипт вызов или установку некой переменной, чтобы не заменялась Разметка полность есть возможность?
23.06.2026 в 20:10 #44023
manjey73Участникget canUpdateDom() {
return true;
}А типа сюда же вставить что-то, чтобы можно было управлять из скрипта компонента и(или) скрипта фейсплейта, надо оно мне перестраивать Dom или не надо.
Вот лично мне эти вызовы из domUpdated выполнения полного скрипта как собаке пятая нога.24.06.2026 в 15:15 #44031
MikhailМодераторПрограммное обеспечение работает так, как оно работает. Если нужно что-то объяснить из скрипта Damper.fp или исходного кода движка мнемосхем, спрашивайте.
24.06.2026 в 15:16 #44032
manjey73УчастникКак же все сложно то 🙂
Теперь вроде не удаляется построенное, но, dataUpdated как не работал, так и не работает.
Скрипт в фейсплейте
class extends ComponentScript { domCreated(args) {} domUpdated(args) {} dataUpdated(args) {} }Скрипт в компоненте
dataUpdated(args) { console.log(<code>dataUpdated FpHeat выполняется - id</code>); }в логе пусто
переносим вывод в лог в скрипт фейсплейта
class extends ComponentScript { domCreated(args) {} domUpdated(args) {} dataUpdated(args) {console.log(<code>dataUpdated FpHeat выполняется - id</code>);} }получаем постоянный вывод в лог консоли.
Итог, скрипт dataUpdated в компоненте внутри фейсплейта не работает вообще? или еще какие-то причины?
24.06.2026 в 15:17 #44033
manjey73Участникз.ы. мне нужно, чтобы скрипты работали строго внутри компонентов.
Скрипты в самом фейсплейте это уже некие допы, не относящиеся к компонентам напрямую.
24.06.2026 в 15:19 #44034
manjey73УчастникПрограммное обеспечение работает так, как оно работает5 баллов! 😀 , то есть не стреляйте в пианиста, он играет как умеет
-
Ответ изменён 2 недели, 1 день назад пользователем
manjey73.
24.06.2026 в 15:33 #44036
manjey73УчастникВ общем не работает оно как должно 🙁
Теперь похоже и domUpdated отвалился в самом плагине.
В Редакторе поведение то же.з.ы. что еще нужно сделать, чтобы вы поняли где проблемы и их исправили?
смотрю, что создание видео никак не помогает в поиске проблемы, как и скрины.24.06.2026 в 16:12 #44037
manjey73Участникесть подозрение, что вы тестируете на своих дамперах и солнышках работу Mimic.
А дальше не доходите. Вот где-то там ошибкаМетоды domCreated и domUpdated вызываются для схемы, компонентов и дочерних компонентов фейсплейтов как в режиме выполнения, так и в режиме редактирования.
и вот этого не происходит для domUpdated и dataUpdated или сильно хромает.
только что проверил, подставил скрипт в метод самого фейсплейта, только заменил parent.properties на properties и прилепил в id еще номер компонента. И скрипт отработал. Если он в дочернем, то не работает.
domUpdated отвалился внутри дочернего.25.06.2026 в 09:20 #44039
manjey73УчастникМихаил, вспомните с чего все началось — «не работают скрипты в компоненте, вставленном в faceplate».
Вот так оно все и продолжается не работать 🙂
Ну и плюс обновление Разметки при domUpdated. Если обновление для чего-то нужно, неплохо бы его выключать, например в скрипте domCreated каким-то параметром в false. -
Ответ изменён 2 недели, 2 дня назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.