Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Проброс команд во внутренний компонент
- В этой теме 43 ответа, 2 участника, последнее обновление 1 неделя, 3 дня назад сделано
Mikhail.
-
АвторЗаписи
-
14.09.2026 в 16:40 #44956
manjey73УчастникПосмотрите через инструменты браузера в объекте компонента подобъект привязок (bindings). Там должны быть номера каналов. Компонентом является экземпляр фейсплейта. Если не увидите, я посмотрю точнее.
И если можно, со скриншотами и описанием последовательности действий.
Я перерыл все, что только можно в окнах по F12 (Посмотреть код элемента)Даже намека не нашел на bindings
23.09.2026 в 09:14 #45066
manjey73Участникочень актуально, как получить номера каналов?
в идеале вариации — сразу массив всех привязанных каналов фейсплейта (хотя пока не знаю зачем, если надо определять что кому принадлежит?) например из кода самого фейсплейта.
Номер канала привязки с каким-то пониманием через что привязан, через объект или через устройство?
Желательно из кода скрипта самого компонента.23.09.2026 в 09:32 #45067
manjey73УчастникВот пример с кнопкой, в скрипте, который вызывается как из domCreated, так и из domUpdated должно поменяться положение кнопки туда, куда я ее задам через экспортируемое свойство или скриптом (имеется ввиду не явное задание положение через y самого компонента, а именно через настройки другой переменной или по совокупности других переменных скриптом).
Так вот domCreated не исполняет этого действия. Но если заставить фейсплейт обновляться костылями, так как без принудительного обновления не срабатывает domUpdated, то кнопка сменит свое положение. Это видно по правому фейсплейту с табличкой. Там по умолчанию 5 строк + заголовок, за счет изменения размера и отключаю видимость ненужной мне строки, меняю основной цвет текста, шрифты и так далее. И вот все эти смены свойств компонентов НЕ РАБОТАЮТ в domCreated, как бы я ни старался.
23.09.2026 в 09:40 #45068
manjey73УчастникИ вот пример, когда я принудительно заставил исполняться domUpdated. Кнопка поменяла свое положение (в свойствах стоит значение 80 для Y кнопки)
А так же сделал копию таблички и отключил в свойствах заголовок, не меняя размера, и туда уже 5 строк влезло.
При этом тут не используется НИГДЕ dataUpdated, потому что он тут нафик не нужен.
23.09.2026 в 16:23 #45079
manjey73УчастникПопробую пояснить скрин.
domCreated 1-ого компонента почему-то последний ? Проверил, его id=1
Добавил лог ко всем остальным компонентам и получил тот же результат
Порядок такой 2,3,4,5,6,7,8,9,10,11,1 — ПОЧЕМУ он последний, а не первый ? 🙂Далее Faceplate domCreated — ожидаемо
Далее Faceplate dataUpdated — тоже ожидаемо (вроде бы) НО, dataUpdated пишет в customData данные, полученные от сервера.
Далее выполняются domUpdated компонентов по очереди 2, 4, 6, 8, 10 (2 закоментировано, по этому на скрине не видно) и пытаются читать из customData РОДИТЕЛЬСКОГО объекта, то есть фейсплейта, НО ТАМ НИЧЕГО НЕТ, потому что данные там появятся, когда отработает Faceplate domUpdated
И только на следующем круге у нас domUpdated компонентов сможет получить данные из customData родительского объекта и вот тут они ВЧЕРАШНИЕ 🙂з.ы. не кидайте в меня камни и не говорите куда идти смотреть код и ход выполнения, я по старинке, расставляя console.log, потому что другого способа отслеживать пока не нашел 🙂 ну или не умею….
В общем прикольно. dataUpdated может быть только у фейсплейта, ибо типа нефик в компонентах?
Ну а данные мы всегда в таком случае получаем ‘вчерашние’ из-за того, что они записываются не dataUpdated а domUpdated фейсплейта, который выполняется после всех domUpdated компонентов.Как быть в данном случае? какие костыли делать?
23.09.2026 в 16:39 #45084
MikhailМодераторДаже намека не нашел на bindings
Нужно искать не в DOM-модели документа, а в JavaScript-объектах. В скрипте компонента сделайте console.log(args) и в консоле браузера можно будет раскрыть всю структуру объектов, которые доступны.
23.09.2026 в 16:42 #45085
MikhailМодераторАлгоритм обновления данных можно пройти по шагам, начиная с этого места.
23.09.2026 в 16:47 #45087
manjey73Участникну в качестве костыля, чтобы ошибка не светилась я ввел так
const customData = args.component.parent.customData; // Родительский customData
if(customData.dtoData?.length > 0) {то есть добавил ? — но это не отменяет вчерашних данных 🙁
23.09.2026 в 17:06 #45090
manjey73Участникв общем я могу прочитать массивом несколько переменных с Сервера, но сейчас проверил, не учел, что Сервер возвращает массив после сортировки. Специально последовательность каналов прописал по другому.
но это так понимаю мелочи.
Но вот как-то получать или преобразовывать в вариант отображаемого вида было бы полезно скриптами системы. Потому что только система знает, как их надо отобразить.
И получать массив номеров каналов передавая кому-то коды тегов, если у нас привязка будет через объект или устройство было бы полезно, если нет такого же механизма для чтения с Сервера.
-
Ответ изменён 2 недели, 1 день назад пользователем
manjey73.
23.09.2026 в 21:28 #45092
manjey73УчастникМожет сейчас будет проще поменять последовательность выполнения domCreated и domUpdated скрипта фейсплейта и сделать их ПЕРВЫМИ ?
с точки зрения будут там подготовительные скрипты для выполнения остальных или завершающие, да какая разница?
а вот то, что данные куда-то там попадут раньше после dataUpdated фесплейта будет лучше.И не надо разделять на части, типа domUpdatedFirst и domUpdatedLast, типа до скриптов компонентов и после.
24.09.2026 в 09:46 #45096
manjey73УчастникПопробовал полученный массив с данными каналов в dataUpdated положить сразу в customData компонента, который оттуда их должен взять. И опять ошибка на первом шаге.
В общем пока не отработает domUpdated скрипта самого фейсплейта, данных нигде нет.
Почему собственно? разве dataUpdated не имеет прямого доступа к customData ?
Где-то промежуточно хранит, пока их не перенесет именно domUpdated скрипта фейсплейта?Вот эту штуку почините/поправьте/измените пожалуйста. Потому что я не знаю, как это обойти, кроме просто указания пропустить ошибку.
Либо dataUpdated должен сразу закидывать полученные данные в customData, либо domUpdated фейсплейта должен отработать раньше всех и перенести данные уже фактически в customData, чтобы остальные оттуда могли их забирать.
Может действительно сделать ДВА скрипта (domCreated, domUpdated) для главного скрипта фейсплейта, появится больше гибкости. Ну и то, что прочитал dataUpdated должен выполнить первый скрипт фейсплейта domUpdated_1 условно.24.09.2026 в 09:47 #45097
manjey73Участникс последовательностью непонятно, почему 1-й компонент последний вдруг ????
на сортировку не похоже, тогда было бы 1,10,11,2,3 и так далее вроде.24.09.2026 в 10:24 #45098
manjey73УчастникЯ уже перенес в domUpdated скрипта фейсплета, и все равно получаю ту же ошибку.
На первом цикле, после получения данных от сервера. Но массив с данными вот же он, тут же…Почему customData пустое на первом цикле даже в domUpdated скрипта фейсплейта??????
24.09.2026 в 10:36 #45099
manjey73Участникблин, new MainApi это типа асинхронный метод?
Получается мы всегда будем получать вчерашние данные?
24.09.2026 в 10:49 #45100
manjey73Участникха, оказывается можно делать запросы к Серверу даже не из dataUpdated я прямо из domCreated и потом из domUpdated 🙂
непонятно, нафига тогда вообще dataUpdated нужен, если из-за применения скрипта в нем происходит ‘ВЧЕРА’ ?
-
Ответ изменён 2 недели, 1 день назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.