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