A-Frame组件不适用于ES6模块吗?

时间:2019-08-07 14:07:17

标签: aframe ar.js

当我在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函数中调用函数的正确方法应该是什么? 谢谢!

1 个答案:

答案 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]

工作示例:https://glitch.com/edit/#!/little-coral