2017-03-17 45 views
1

我正在寫一個自定義框架組件來渲染一個基於很長的對象數組的網格。如何將引用傳遞給aframe組件?

AFRAME文檔僅列出數組作爲輸入類型,其中可以傳遞一個屬性,它將被解析到一個數組attributename="1 2 3"

我想通過與這樣的一個javascript參考從外部組件:

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

或DOM API之外創建組件和參數傳遞給組件的init方法。

回答

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); 
+0

同意,這是一個更清潔的選擇。 – naugtur

0

找到一種方法來做到這一點。

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的」已登記的和有一個方法customMethod旁邊初始化等