Переход от this.el к parentEl возвращает неопределенное значение, но обратное возвращает элемент - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь установить ссылку от дочернего элемента на компонент в его родительском элементе. Я ожидал, что смогу ссылаться на него, вызывая this.el.parentEl.components['parent'] в функции init (), но это возвращает undefined.

Другие тестовые случаи работают нормально: 1. Ссылка на дочерний компонент от родительского компонента работает нормально из родительского компонента. 2. Ссылка на родительский компонент из фрагмента кода ниже HTML. 3. Ссылка на родительский компонент из дочернего элемента из фрагмента кода под html.

Это проблема жизненного цикла? Почему в этом случае разница между ребенком и родителем?

<script src="https://aframe.io/aframe/dist/aframe-master.min.js"></script>

<script>

  AFRAME.registerComponent('parent', {

    multiple: false,

    init: function () {
      this.child = this.el.children[0].components['child']
      console.log("child component: ", this.child); //This works
    }        
  })


  AFRAME.registerComponent('child', {

    multiple: false,

    init: function () {
      this.parent = this.el.parentEl.components['parent']
      console.log("parent component: ", this.parent); //Undefined
    }        
  })

</script>

<a-scene>

  <a-entity parent>
    <a-entity child></a-entity>
  </a-entity>

</a-scene>


<script>

  var parent = document.querySelector('[parent]').components.parent
  console.log("parent component from below: ", parent); //This works

  var parentfromchild = document.querySelector('[child]').parentEl.components['parent']
  console.log("parent from child from below: ", parentfromchild); //This works

</script>

1 Ответ

0 голосов
/ 06 июля 2018

Когда вызывается init, родитель еще не инициализирован. Сцена загружается от детей к родителям. Дождитесь загрузки сцены, прослушивая событие loaded: Как определить, когда сцена загружается в A-Frame?

...