AFRAME: Событие по завершении динамического добавления компонента - PullRequest
0 голосов
/ 28 июня 2018

Мой пример использования следующий:

В цикле создаются объекты и устанавливаются компоненты. Это через json-объект, который передается в функцию. У меня вопрос, как лучше всего получить событие, когда весь набор сущностей и их компоненты инициализируются. Код примерно такой

var parent = document.querySelector('#parent');
var ent = document.createElement('a-entity');
parent.appendChild(ent);
for(var i =0; i = components.length; i++) {
   var arr = components[i];
   var cl = arr[0]; // class name
   var attr = arr[2]; // component name
   var attrV = arr[3]; // component data
   ent.setAttribute('class', cl);
   AFRAME.utils.entity.setComponentProperty(ent, attr, attrV);
   //ent.setAttribute(attr, attrV); tried with this too
}
console.log('loop completed')

Завершенный цикл регистрируется до завершения загрузки некоторых компонентов. Я хотел бы получить обратный звонок, чтобы узнать, что все компоненты были загружены.

Кажется, что есть событие componentinitialized, но оно отправляет возврат только для 1 компонента. Мое реальное требование (не отраженное в приведенном выше коде) заключается в том, что объект может иметь несколько добавленных компонентов.

Чтобы использовать вышеизложенное, мне, возможно, придется установить это событие для каждого компонента и отслеживать, было ли оно завершено или нет. Просто интересно, есть ли более элегантный способ сделать это. Спасибо

1 Ответ

0 голосов
/ 28 июня 2018

Объекты испускают «загруженное» событие. Это должно быть проще, чем прослушивание каждой инициализации компонента внутри объекта.

Попробуйте:

entity.addEventListener("loaded", (e) => {
  console.log(e)
})

как и я здесь .

...