Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Проброс команд во внутренний компонент
- В этой теме 43 ответа, 2 участника, последнее обновление 1 неделя, 4 дня назад сделано
Mikhail.
-
АвторЗаписи
-
24.09.2026 в 10:59 #45101
manjey73Участникя так понимаю, где-то в этих ‘механизмах’ и сидит этот эффект ‘ЗАВТРА’
когда мы вводим в экспортируемое свойство значение, а скрипты компонентов и даже фейсплейта это значение получает только завтра.24.09.2026 в 11:57 #45102
manjey73Участникс последовательностью непонятно, почему 1-й компонент последний вдруг ????
ХА 3 раза, последовательность исполнения скриптов компонентов зависит не от их ID, а от расположения компонентов в дереве мнемосхемы 🙂
24.09.2026 в 13:58 #45106
manjey73УчастникЕще добавлю, при чтении через mainApi в domCreated запаздывание значений происходит вообще на 2 шага из-за всех этих механизмов.
Может проще пропустить ошибку? вроде тогда один шаг теряем. Но лучше бы вообще не терять….. 🙁24.09.2026 в 16:49 #45114
manjey73УчастникМожно на паузе проматывать посекундно. Проблема не столько в запаздывании отображения, сколько в том, что скрипт компонента ожидает одно, а получает другое.
Как бы тут проблема, которую я не знаю как решить.В таблице || На схеме
2.034 || 9.826
4.425 || 0.517
8.342 || 2.024
6.278 || 4.425
9.016 || 8.342
6.921 || 6.278
8.026 || 9.016И так далее. На 2 шага по факту.
Это не через привязки, а используя MainApi, кроме Square и Time, через привязки так понимаю на шаг меньше получается, судя по опыту смены картинок и прочего.-
Ответ изменён 2 недели, 1 день назад пользователем
manjey73.
24.09.2026 в 23:46 #45116
manjey73УчастникStart Faceplate dataUpdated (5) [1, 1, 1, 1, 1] 101,102,103,104,105 Start domUpdated 2 Component ---------------------------------------------------------------- (5) [{…}, {…}, {…}, {…}, {…}] 0: {cnlNum: 101, val: -0.23151958422842756, stat: 1} 1: {cnlNum: 102, val: 1, stat: 1} 2: {cnlNum: 103, val: 2.2310920899999473, stat: 1} 3: {cnlNum: 104, val: 0, stat: 0} 4: {cnlNum: 105, val: 0, stat: 0} length: 5 [[Prototype]]: Array(0) InCnlNum 101 {cnlNum: 101, val: -0.23151958422842756, stat: 1} MyProp.Text = -0.232 -------------------------------------------------- Start domUpdated 4 Component Start domUpdated 6 Component Start domUpdated 8 Component Start domUpdated 10 Component Start Faceplate domUpdated (5) [{…}, {…}, {…}, {…}, {…}] 0: {cnlNum: 101, val: -0.2333464179929472, stat: 1} 1: {cnlNum: 102, val: 1, stat: 1} 2: {cnlNum: 103, val: 2.2490282999999636, stat: 1} 3: {cnlNum: 104, val: 0, stat: 0} 4: {cnlNum: 105, val: 0, stat: 0}дальше идет повтор и уже не так интересно.
Код внутри компонента, который пишет в .text свойства
if(customData?.dtoData) { console.log(customData?.dtoData); // вывод в консоль ---------- console.log("InCnlNum " + myprop.inCnlNum); // вывод в консоль ---------- const dataCnl = customData.dtoData.find(dto => dto.cnlNum === myprop.inCnlNum); console.log(dataCnl); // вывод в консоль ---------- myprop.text = dataCnl.val.toFixed(3); console.log("MyProp.Text = " + myprop.text); } // вывод в консоль ---------В логе выделил вывод в консоль между ——————-
При этом мы имеем экспортируемое свойство со значением Val 1 — которое должно замениться собственно данными после чтения с Сервера.
В консоли видно, что свойству присвоено значение -0.232 но увы, кто-то переписывает его на Val 1. То есть какой-то механизм после присвоения значения из данных опять пишет текст по умолчанию из экспортируемого свойства. 🙁-
Ответ изменён 2 недели, 1 день назад пользователем
manjey73.
24.09.2026 в 23:52 #45118
manjey73УчастникОтсюда и танцы с бубнами, в попытках заменить текст экспортируемого свойства данными с сервера. При этом сохранить возможность скриптом сделать так, чтобы можно было не писать в него, а привязать физически через механизмы привязок.
В общем не судьба похоже.
25.09.2026 в 00:00 #45119
manjey73УчастникУдалил привязку и данные пошли. От так от…
как сделать, чтобы была возможность привязывать и так и так, и при этом не редактировать фейсплейт?
25.09.2026 в 10:04 #45120
manjey73УчастникНо вот то, что вызывает у меня странность и непониние.
По коду _getData вызывается только из dataUpdated фейсплейта.
При этом одна строка лога НИКОГДА не печатается при выполнении самого dataUpdated.
Эта строка выводится почему-то в domUpdated фейсплейтаПочему? этот код не выполняется в domUpdated от слова вообще?
вот код domUpdated фейсплейта.
domUpdated(args) { console.log('Start Faceplate domUpdated'); }вот код dataUpdated фейсплейта
dataUpdated(args) { console.log('Start Faceplate dataUpdated'); this._getData(args); args.propertyChanged = true; }А по логу видно, что ничего в dto нет на первом цикле, все domUpdated компонентов пропускают ошибку за счет customDtata?.dtoData
И тут возникает вопрос, нет данных, зачем выполнять domUpdated компонентов, если они зависят от данных?
Почему domUpdated фейсплейта при этом получает данные и выводит их не обращаясь к коду, где собственно идет вывод?
Он реально уже получил данные, или это некий принцип работы console.log ?
В общем меня это в ступор вводит.25.09.2026 в 12:02 #45122
manjey73УчастникСобственно вопрос:
Как сложно поменять в коде последовательность выполнения кода фейсплейта и компонентов. Сделать domCreated и domUpdated фейсплейта первыми для теста ?
хотелось бы попробовать протестировать в таком варианте. сильно сложно там что-то поменять в коде?
25.09.2026 в 13:46 #45123
manjey73Участникимхо. Однозначно domCreated и domUpdated фейсплейта (Родителя) должен запускаться раньше, чем аналогичные функции компонентов.
1. кто сказал, что customData должна быть и нужна везде?
2. По мне так проще пользоваться Родительским customData, так как он создается в одном месте, а не в куче мест. Проще код, если нужно выполнить ряд математических или логических действий.
3. в компонентах можно использовать customData родителя уже в domCreated, сейчас финт ушами и он расположен в domUpdated компонентов.
4. Ну, это только проверка покажет, будет ли domUpdated родителя успевать получать данные после выполнения dataUpdated5. Если была причина сделать именно ‘сзади’ выполнение, то сделайте два, ‘спереду’ и ‘сзаду’ 🙂
но впереди по мне удобнее.25.09.2026 в 13:53 #45125
MikhailМодераторКак сложно поменять в коде последовательность выполнения кода фейсплейта и компонентов. Сделать domCreated и domUpdated фейсплейта первыми для теста ?
Подобное изменение в продукте не планируется. Если хотите попробовать, измените локально.
Добавить дополнительные обработчики в дополнение к существующим — это возможно в будущих версиях.25.09.2026 в 14:06 #45126
manjey73УчастникВот если бы я понимал как это сделать, то наверное и не спрашивал бы 🙂
хоть локально, хоть глобально, я даже не понимаю, что вообще надо переставить и где 🙂Вот я еще чего не понимаю, ставлю на паузу и двигаюсь по шагам, и там, где по идее я должен видеть свои данные, я всегда вижу данные по каналам 101, 104 и 105.
Хотя при выводе в консоль я вижу реальность, которую запрашиваю.Ну и пытаясь ‘вылизать’ код в фейсплейте и компонентах понимаю, что Родитель должен запускать скрипты все же первым. А если была какая-то идея именно делать это последними, то надо разделить чтобы было domCreatedStep1 и domCreatedStep2 с возможностью указания, что именно надо в первом шаге выполнять, что в последнем.
26.09.2026 в 10:11 #45132
manjey73УчастникПодобное изменение в продукте не планируется. Если хотите попробовать, измените локально.
Добавить дополнительные обработчики в дополнение к существующим — это возможно в будущих версиях.поменял локально 🙂 С точки зрения получения данных осталось все по прежнему. Запрос — Ожидание — Ответ = где-то уже на 10-м компоненте…
как заставить компоненты не обновляться до получения данных пока не понял. При скользящем отображении не так важно наверное.Вот, если правильно понимаю, то Faceplate исполняется в конце, чтобы все компоненты расположились в DOM и иметь возможность ими манипулировать?
Тогда надо будет добавить исполнение в начале дополнительные методы, чтобы можно было выставлять предварительные переменные для всех. Тогда domCreated компонентов смогут без танцев с бубнами их забирать и применять. Хотя мне кажется это не решит проблемы ‘светофоров’ при открытии схемы. Хотя если сделать при domCreated скрытый, невидимый может и так можно обыграть, если domUpdated не будет тянуть из исходника сразу в DOM для перерисовки.В общем пока возвращаю оригинал где исполнение в Конце.
28.09.2026 в 15:09 #45149
MikhailМодераторFaceplate исполняется в конце, чтобы все компоненты расположились в DOM и иметь возможность ими манипулировать?
По аналогии с реализацией в .NET. Когда будет следующая итерация изменений в мнемосхемах, вернёмся к вопросу модели событий. Хотелось бы добиться того, чтобы изменять свойство фейсплейта и изменения сразу отображались в редакторе. Это сейчас работает для дочернего компонента Разметка, но не работает для других компонентов.
-
Ответ изменён 2 недели, 1 день назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.