如何传递对aframe组件的引用?

时间:2017-03-17 10:21:18

标签: javascript components aframe

我正在编写一个自定义的aframe组件来基于很长的对象数组渲染网格物体。

Aframe文档仅将数组列为输入类型,您可以在其中传递属性,并将其解析为数组attributename="1 2 3"

我想从外部将javascript引用传递给组件,如下所示:

const hugeArray = [{somejson}, ...]
const element = document.createElement('my-component');
element.<something happens here>

或在DOM API之外创建一个组件,并将参数传递给组件的init方法。

2 个答案:

答案 0 :(得分:1)

找到了一种方法。

const hugeArray = [{somejson}, ...]
const element = document.createElement('a-entity');
element.setAttribute('mycomponent', '');
//... add component to DOM and let it initialize
element.components.mycomponent.customMethod(hugeArray);

所有假设组件都是在名称“mycomponent”下注册的,并且在init等方面有一个方法customMethod

答案 1 :(得分:1)

使用setAttribute,它也可以获取对象和数组。通过schema而不是调用方法,因为init处理程序会在适当的时候自动为您调用。

https://aframe.io/docs/0.5.0/core/entity.html#setattribute-attr-value-componentattrvalue

AFRAME.registerComponent('mycomponent', {
  schema: { 
    yourData: {type: 'array'}
  },

  init: function () {
    console.log(this.data.yourData);
  }
});

const hugeArray = [{somejson}, ...]
const element = document.createElement('a-entity');
element.setAttribute('mycomponent', {yourData: hugeArray});
scene.appendChild(element);