Javascript 在A-Frame组件上,如何在函数之间共享数据?

Javascript 在A-Frame组件上,如何在函数之间共享数据?,javascript,aframe,webvr,Javascript,Aframe,Webvr,我正在制作一个A-Frame组件,我想在init等函数和其他自定义组件处理程序之间共享数据 我找到了如何添加到组件架构中,以允许来自DOM的输入使用this.data设置变量,如下所示: 但是我遇到了问题,有时this.data的值会从DOM恢复到初始状态,而不反映运行时的修改。是否有更好的方法跨组件共享数据?建议在a-Frame组件中存储数据的方法有两种,类似于公共和私有属性 架构(公共) 组件架构中声明的属性是公共的,可以使用setAttribute进行设置,也可以使用getAttribu

我正在制作一个A-Frame组件,我想在
init
等函数和其他自定义组件处理程序之间共享数据

我找到了如何添加到组件架构中,以允许来自DOM的输入使用
this.data
设置变量,如下所示:


但是我遇到了问题,有时
this.data的值会从DOM恢复到初始状态,而不反映运行时的修改。是否有更好的方法跨组件共享数据?

建议在a-Frame组件中存储数据的方法有两种,类似于公共和私有属性

架构(公共)

组件架构中声明的属性是公共的,可以使用
setAttribute
进行设置,也可以使用
getAttribute
this.data.\uuuuuuuuuuu
进行访问注意:直接修改
此.data
是不安全的,因为A-Frame在从DOM接收更新时会覆盖数据

HTML:

物业(私人)

对于要在组件中使用的数据,您还可以将其直接分配给
。当数据只在组件中使用,不需要在HTML中声明时,这是最好的选择

JS:


请共享您的代码,以便更容易帮助您
<a-entity foo="bar: 10"></a-entity>
AFRAME.registerComponent('foo', {
  schema: {
    bar: {default: 25}
  },
  init: function () {
    console.log(this.data.bar); // 10

    this.data.bar = 5; // THIS CHANGE MAY BE LOST.
  },
  doStuff: function () {
    console.log(this.data.bar); // 10
    this.el.setAttribute('bar', 'foo', 15);
    console.log(this.data.bar); // 15
  }
});
AFRAME.registerComponent('foo', {
  init: function () {
    this.baz = 'hello';
    console.log(this.baz); // hello
  },
  doStuff: function () {
    console.log(this.baz); // hello
    this.baz = 'bonjour';
    console.log(this.baz); // bonjour
  }
});