Mimic — скрипты для SVG

Просмотр 15 сообщений - с 46 по 60 (из 94 всего)
  • Автор
    Сообщения
  • #42399
    manjey73
    Участник

    Уже использовал, он запускается, но вот он не находит svg в dom. То есть он запускается раньше, чем что-то там где-то там появляется 🙂

    #42401
    manjey73
    Участник

    то есть суть.

    код в domUpdated(args)
    const fon1 = args.component.properties.fon;
    args.component.dom.find(«#bodyvn-10»).attr(«fill», fon1);

    Работает.
    Этот же код в domCreated — Не работает, хотя там же console.log работает

    #42403
    manjey73
    Участник

    И кстати, смог поменять id именно в domUpdated

    args.component.dom.find("#bodyvn-10").attr("id", "Новый ID");

    так что вот посмотрите, когда именно отрабатывает domCreated и почему он не видит данных. Поэтому ничего и не меняется.

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

    domCreated — создание DOM-модели компонента. Данных там и не должно быть.

    #42406
    manjey73
    Участник

    Хм, тогда я не очень понимаю принцип.
    Написано в Особенностях

    domCreated(args) — Вызывается один раз сразу после создания DOM схемы или компонента. Для фейсплейта вызывается после вызова аналогичных методов входящих в него компонентов.

    То есть указано по моей логике — сперва создается схема, потом вызывается скрипт.

    А вы говорите, что скрипт создает DOM модели компонентов.

    #42407
    manjey73
    Участник

    Сразу ПОСЛЕ создания DOM в моем понимании тело компонента должно быть уже в DOMе, когда вызывается скрипт и он должен все находить.

    #42408
    manjey73
    Участник

    Тут может что-то с ExtraMarkup? например я выводил id компонента из domCreated, все правильно вывел по номеру.

    args.component.id так понимаю после создания получаем.

    #42409
    manjey73
    Участник

    Или например ошибка в расширенных компонентах схем ? Что сперва скрипт отрабатывает, а только потом расширенные компоненты добавляют в ДОМ компонент ?

    #42411
    manjey73
    Участник

    Вот, в ExtraMarkup прописал скрипт

    class extends ComponentScript {
    
      domCreated(args) {
    console.log("DOM created for component " + args.component.id);
      }
    }

    в логе тишина полная.

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

    Проблема в Faceplate, если на схему поставить просто ExtraMarkup и прописать скрипт выше, то получим DOM created for component 56 то есть его id.

    Все то же самое, но внутри фейсплейта уже не работает

    #42414
    manjey73
    Участник
      document.querySelectorAll('use[xlink\\:href*="#' + oldId + '"]').forEach(el => {
        el.setAttribute('xlink\\:href', el.getAttribute('xlink\\:href').replace(oldId, newId));

    document.querySelectorAll — собственно для скриптов что будет заменой ?

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

    Подготовлю пример фейсплейта для работы с SVG, выложу его, напишу в эту тему.

    #42437
    manjey73
    Участник

    Сейчас интересует 2 вопроса:

    1. Это действительно ошибка, почему в faceplate не работает скрипт domCreated а в отдельно вставленном ExtraMarkup на схему прекрасно работает? мой скрипт прекрасно поменял все id
    2. как пользоваться такими вещами, как document.querySelectorAll, document.getElementById ? так понимаю document надо заменить на что-то типа args.component.XXXXXX ? или это не будет работать и типа даже не пытайтесь?

    #42443
    manjey73
    Участник

    Да, еще нюанс, domUpdated в фейсплейте работает постоянно, даже если я ничего не делаю 🙂
    он же в ExtraMarkup на главной схеме не работает и что с ним делать мне непонятно, там же нет тогда экспортируемых свойств

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

    1. В фейсплейте SunComponent.fp метод domCreated вызывается, судя по выводу в консоль.
    domUpdated не вызывается постоянно на примере того же компонента. Если это не так, нужно искать ошибку в скриптах.
    2. Это стандартные функции JavaScript. По доступна официальная документация.
    args.component.dom — это объект jQuery. С ним удобнее работать методами jQuery, как показано в примере.

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