Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Изменение в построенном DOM
- В этой теме 47 ответов, 3 участника, последнее обновление 4 часа, 3 минуты назад сделано
manjey73.
-
АвторЗаписи
-
17.06.2026 в 21:34 #43958
manjey73УчастникСобственно на этом скрине Два дефиса справа мы видим то, что построил Джек 🙂 (domCreated)
Теперь вопроc, что и как писать в domUpdated, чтобы манипулировать данными именно здесь? а не снова обращаться к исходнику faceplate-а ?
Либо вообще ничего не писать в domUpdated, а что-то писать в dataUpdated…
В общем цель построить все ОДИН раз в domCreated и нигде больше. в остальных только менять значения.
-
Тема изменена 3 недели назад пользователем
Mikhail.
18.06.2026 в 18:36 #43969
MikhailМодераторdomUpdated чаще всего пустой,
dataUpdated — здесь пишется изменение DOM-объекта при изменении данных
В качестве примера посмотрите схему ExtraCompTest.mim, скрипт компонента с идентификатором 6.19.06.2026 в 10:59 #43977
manjey73УчастникdataUpdated(args) { const props = args.component.properties; const customData = args.component.customData; const cnlData = args.dataProvider.getCurData(props.inCnlNum); const shining = cnlData.d.stat > 0 && cnlData.d.val > 0; if (customData.shining !== shining) { customData.shining = shining; args.component.dom.find("svg path").attr("fill", shining ? "gold" : "silver"); } }Пока мало о чем говорит, тот же args.component — судя по работе в domUpdated все данные брались из исходника разметки фейсплейта. Каким образом тут дерево уже отрисованного web ?
19.06.2026 в 11:14 #43978
manjey73УчастникВсе ясно, та же шляпа, Скрипт берет данные из исходника разметки, соответственно изменить только параметр цвета не получится, не перестраивая полностью все.
масло маслянное блин 🙁
Еще раз, откройте скрин «Два дефиса» — Как получить доступ ТУДА и менять ТАМ в уже построенном ?
Не залазя в дебри исходника фейсплейта?Все id уже известны, так как все построено.
Что касается внешнего вида фейсплейта, то выглядит он так в редакторе фейсплейта 🙂а на скрине 2 дефиса видно что там есть полоски, треугольники. Примерно так, как картинка слева.
-
Ответ изменён 2 недели, 6 дней назад пользователем
manjey73.
19.06.2026 в 11:29 #43980
manjey73УчастникНемного для понимания процесса. В Размете в svg есть пустая группа с id
<g id="{0}sym1"> </g>и вот в нее я добавляю <line>, <path> при помощи скриптов в domUpdated
Например добавил путь, который отобразится на мнемосхеме — в исходнике Разметки его нет, отсутствует.
<path id=»comp4-1p1″ d=»M10,18 L15,18 L28,60 L15,102 L10,102″ fill=»none» stroke=»#999″ stroke-width=»2″></path>
Как мне в dataUpdated поменять цвет stroke=»#999″ не трогая всего остального и не перестраивая все заново ?
19.06.2026 в 11:33 #43981
manjey73Участниквот если поменять цвет ручками тут, то все работает. Нужно получить доступ из скрипта domUpdated, dataUpdated именно сюда, а не в исходник faceplate.
19.06.2026 в 16:03 #43986
MikhailМодераторИзменить атрибут внутри SVG можно. Посмотрите скрипт Damper.fp
19.06.2026 в 16:05 #43987
manjey73Участникмне нужно что-то менять в DOMе, который построил Джек 🙂 — Вот то, что показывает консоль СПРАВА на скрине.
из args мне в скрипте нужен только id и более ничего.
19.06.2026 в 16:06 #43988
manjey73УчастникНеужели я не могу так задать вопрос, чтобы меня поняли?
я не хочу снова, снова и снова перестраивать то, что я построил. Это должно делаться ОДИН раз при загрузке страницы, далее мне нужен доступ к странице.19.06.2026 в 16:29 #43992
manjey73Участникargs.component.dom .find('#${idPrefix}damper').attr("transform", 'rotate(${angle} 110 70)') .find("rect").attr("fill", fillColor).attr("stroke", strokeColor);и
this._showRotation(args);Это все работает с исходником svg из фейсплейта, не со страницей, на которую этот svg помещен.
19.06.2026 в 16:55 #43993
manjey73УчастникВ общем нихрена это все не работает 🙁
привет примитивы….убрал domUpdated (закомментировал вообще везде).
Добавил в скрипт dataUpdated вызов той же функции, что и в domCreated.Ошибок НЕТ, перестройки изображения НЕТ. Все, что построилось в domCreated просто пропадает.
19.06.2026 в 22:24 #43994
manjey73УчастникВ фейсплейт и в компоненте пустые
domUpdated {}Обновление экрана — видно, что происходит отрисовка, потом стирание. Простите а кому-то разрешали все стирать? учитывая, что domUpdated пуст ?
о каком изменении в dataUpdated тогда может идти речь, если второй сосед все хреначит?
В общем надоело мне время тратить на эти глюки. Пошел опять за семками и на забор 🙂
20.06.2026 в 08:58 #43995
manjey73УчастникЯ кажется догадываюсь, где вы собаку закопали 🙂
код не смотрел, но по поведению, у вас копируется все на страницу по новой из кода Разметки и перед запуском скриптов domCreated и domUpdated.
Если это так, то domCreated бесполезная фигня…пока не придумал, как это протестировать.
20.06.2026 в 10:05 #43996
manjey73УчастникdataUpdated не выполняется вообще. Внутри просто вывод текста в лог консоли. больше ничего нет. 🙁
22.06.2026 в 09:15 #43997
manjey73УчастникИз наблюдений.
domCreated важен для Редактора, и вроде как domUpdated в Редакторе на запускается сразу, как уже на web странице Плагином.
Плагин запускает domCreated и тут же domUpdated и начинается долбежка скрипта по кругу.я еще удивлялся, почему вы и в domCreated и в domUpdated вызываете один и тот же скрипт this.xxxxxx
Когда у нас в Разметке все статично и нужно только менять цвета, еще куда ни шло. Хотя каждые 1000мс если стоит по умолчанию идет полное перестроение DOM — глупо.
Например мнемосхема электрической схемы, штук так 30-50 одинаковых фейсплейтов Автоматов (3-5 сигналов на каждый, а если с функцией измерения там много сигналов). При этом в один момент если без измерения, может измениться один-два сигнала.
Но перестраиваем мы полностью все, вытаскивая из кода разметки снова-снова и снова…должно быть domCtreated — Создал.
а в domUpdated должен быть уже примитивный скрипт на созданное вида
If поменялось это — сделай это
Можно использовать вложенные if, elseif и т.д. Но по новой перестраивать страницу то зачем?
Да и вообще, зачем обновлять то, что нарисовано именно при помощи domUpdated? типа на уровне выше обновлять весь класс mimic нельзя?
а domUpdated запускать, когда у нас изменились привязанные переменные? -
Тема изменена 3 недели назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.