Изменение в построенном DOM

Просмотр 15 сообщений - с 16 по 30 (из 48 всего)
  • Автор
    Записи
  • #43999
    Mikhail
    Модератор

    Это все работает с исходником svg из фейсплейта, не со страницей, на которую этот svg помещен.

    args.component.dom — это доступ к конкретному элементу на веб-странице, а не к исходному скрипту.

    #44001
    manjey73
    Участник

    тогда не копируйте код Разметки постоянно в DOM при (или перед) запуском domUpdated, раз args.component.dom это именно на web странице.

    проверить же элементарно. Или опять у вас работает, а в 6.4.6 еще не поправлено?

    иначе у меня и вопросов бы не возникло по данному поводу.

    #44002
    manjey73
    Участник

    Изменение ТУТ?

    Тут на скрине видна группа svg comp4-1sym по умолчанию в разметке она ПУСТА
    Все, что вы в ней видите на скрине, создано в domCtreated.

    Оставляем пустой domUpdated и вся группа окажется пустой сразу же, после первой сработки domUpdated.
    Что видно на последующем видео, которое я выложил. Сперва появляются линии внутри объекта и тут же все пропадает. Смотрим в консоль — группа пуста. Значит вся Разметка была обновлена из исходника фейсплейта.

    Обновление экрана 1

    • Ответ изменён 2 недели, 3 дня назад пользователем manjey73.
    • Ответ изменён 2 недели, 3 дня назад пользователем manjey73.
    #44006
    manjey73
    Участник

    не проверял на Damper. Попробуйте в domCreated покрасить любой элемент в ядовитый цвет.
    domUpdated оставьте пустым {}, чтобы он не запускал тот же скрипт и посмотрите результат в консоли на запущенной мнемосхеме.

    #44019
    Mikhail
    Модератор

    тогда не копируйте код Разметки постоянно в DOM

    Кажется более-менее понятно, в чём проблема.
    Рендерер компонента имеет свойство canUpdateDom, которое определяет, будет ли DOM полностью заменён на новый при обновлении или будут затронуты только свойства. Для компонента Разметка DOM полностью обновляется, поэтому в методе domUpdated нужно заново отрисовывать изменения.

    #44020
    manjey73
    Участник

    И после dataUpdated автоматом запускается domUpdated?
    Кстати почему в dataUpdated не срабатывает console.log ? Больше там ничего нет.

    И вот выше написанное, это архи хреново. Потому что нужно изменить только скажем цвет одного элемента, надо полностью выполнять полностью скрипт и соответственно всю портянку, учитывать изменения и т.д.
    Вместо простых функций в domUpdated — получили новое значение, отрисуй только этот элемент компонента, а не все целиком.

    • Ответ изменён 2 недели, 2 дня назад пользователем manjey73.
    #44022
    manjey73
    Участник

    з.ы. добавить в скрипт вызов или установку некой переменной, чтобы не заменялась Разметка полность есть возможность?

    #44023
    manjey73
    Участник

    get canUpdateDom() {
    return true;
    }

    А типа сюда же вставить что-то, чтобы можно было управлять из скрипта компонента и(или) скрипта фейсплейта, надо оно мне перестраивать Dom или не надо.
    Вот лично мне эти вызовы из domUpdated выполнения полного скрипта как собаке пятая нога.

    #44031
    Mikhail
    Модератор

    Программное обеспечение работает так, как оно работает. Если нужно что-то объяснить из скрипта Damper.fp или исходного кода движка мнемосхем, спрашивайте.

    #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 в компоненте внутри фейсплейта не работает вообще? или еще какие-то причины?

    #44033
    manjey73
    Участник

    з.ы. мне нужно, чтобы скрипты работали строго внутри компонентов.

    Скрипты в самом фейсплейте это уже некие допы, не относящиеся к компонентам напрямую.

    #44034
    manjey73
    Участник

    Программное обеспечение работает так, как оно работает

    5 баллов! 😀 , то есть не стреляйте в пианиста, он играет как умеет

    • Ответ изменён 2 недели, 1 день назад пользователем manjey73.
    #44036
    manjey73
    Участник

    В общем не работает оно как должно 🙁
    Теперь похоже и domUpdated отвалился в самом плагине.
    В Редакторе поведение то же.

    з.ы. что еще нужно сделать, чтобы вы поняли где проблемы и их исправили?
    смотрю, что создание видео никак не помогает в поиске проблемы, как и скрины.

    #44037
    manjey73
    Участник

    есть подозрение, что вы тестируете на своих дамперах и солнышках работу Mimic.
    А дальше не доходите. Вот где-то там ошибка

    Методы domCreated и domUpdated вызываются для схемы, компонентов и дочерних компонентов фейсплейтов как в режиме выполнения, так и в режиме редактирования.

    и вот этого не происходит для domUpdated и dataUpdated или сильно хромает.

    только что проверил, подставил скрипт в метод самого фейсплейта, только заменил parent.properties на properties и прилепил в id еще номер компонента. И скрипт отработал. Если он в дочернем, то не работает.
    domUpdated отвалился внутри дочернего.

    #44039
    manjey73
    Участник

    Михаил, вспомните с чего все началось — «не работают скрипты в компоненте, вставленном в faceplate».

    Вот так оно все и продолжается не работать 🙂
    Ну и плюс обновление Разметки при domUpdated. Если обновление для чего-то нужно, неплохо бы его выключать, например в скрипте domCreated каким-то параметром в false.

Просмотр 15 сообщений - с 16 по 30 (из 48 всего)
  • Для ответа в этой теме необходимо авторизоваться.