我正在编写一个自定义的aframe组件来基于很长的对象数组渲染网格物体。
Aframe文档仅将数组列为输入类型,您可以在其中传递属性,并将其解析为数组attributename="1 2 3"
我想从外部将javascript引用传递给组件,如下所示:
const hugeArray = [{somejson}, ...]
const element = document.createElement('my-component');
element.<something happens here>
或在DOM API之外创建一个组件,并将参数传递给组件的init
方法。
答案 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);