当我在AFRAME组件的init函数中时,我想从另一个javascript文件(a.js)调用某个函数(foo)。
在我的index.html中是这样的:
<script type="module">
import {foo} from "a.js";
AFRAME.registerComponent('registerevents', {
init: function () {
foo();
}
}
}
当我这样做时,init函数甚至都不会被调用。
然后我尝试了这样的事情:
<script type="module" src="a.js"></script>
<script>
AFRAME.registerComponent('registerevents', {
init: function () {
foo();
}
}
}
在这种情况下,我有一个未定义的功能。
然后我在a.js中尝试
window.foo = foo;
在我的index.html中:
<script type="module" src="a.js"></script>
<script>
AFRAME.registerComponent('registerevents', {
init: function () {
window.foo();
}
}
}
然后我得到一个window.foo不是函数错误。 在init函数中调用函数的正确方法应该是什么? 谢谢!
答案 0 :(得分:0)
模块和A框架工作正常。问题在于,init方法在实体上设置了组件之前不会被调用。例如,您可以在<script type="module">
import {foo} from './a.mjs';
AFRAME.registerComponent('registerevents', {
init: function () {
foo();
}
});
AFRAME.scenes[0].setAttribute('registerevents','');
</script>
上进行设置,如下所示:
export function foo(){ console.log('Fooing is believing!')}
a.mjs在哪里:
# From codereview.stackexchange.com
def partitions(set_):
if not set_:
yield []
return
for i in range(2**len(set_)//2):
parts = [set(), set()]
for item in set_:
parts[i&1].add(item)
i >>= 1
for b in partitions(parts[1]):
yield [parts[0]]+b
def get_partitions(set_):
for partition in partitions(set_):
yield [list(elt) for elt in partition]