AFRAME.registerComponent('helloworld', { schema:{ things: {type:'array'}, $: {default: document.createElement('div') } }, init: function() { this.data = new Proxy( this.data, { html(data){ return ` ` }, render(data ){ return `
  • ${data.things.join("
  • ")}
  • `}, set(data,k,v){ (data[k] = v) && (data.$.innerHTML = this.html(data)) }, get(data,k ){ return data[k] != undefined ? data[k] : data } }) document.body.appendChild(this.data.$) setInterval( () => { // update js --> HTML+AFRAME this.data.things = [ ...this.data.things, Math.random() ].slice(-3) },500) }, })