0

我遇到了我无法解决的 Yabble 问题。

从我的主要 html 中,我使用 yabble 加载我的所有 js

<script>
require.setModuleRoot('./javascript/');
require.run('main')
</script>

我有一堆js(与gamejs相关)。在一个文件中,我有函数 changeSimulationSettings()。稍后在同一页面中,我想获取用户输入并访问 gamejs 对象并更改它们的状态。我遇到的问题是我无法调用 changeSimulationSettings。它没有在当前上下文中定义。Yabble 做了很多魔法,我无法找到它的定义或访问方式。

<div>
<button type="button" onclick="updateSettings()">Update-Settings</button>
</div>
<script type="text/javascript">
function updateSettings(){
        // access function defined in a js loaded by yabble 
        i.e. changeSimulationSettings()
}
</script>

所有的 js 肯定都被加载了,因为我有从不同文件相互调用的函数,这些函数确实有效。但是,我无法从入口网页中嵌入的 js 调用任何内容。

任何帮助将不胜感激,因为我已经坚持了几个小时。

谢谢,

4

1 回答 1

0

模块中定义的代码是隔离的,不能全局使用。

我会反过来做:从模块中附加一个事件处理程序。不要使用“onclick=”,而是在changeSimuSettings可用的模块中执行类似的操作(例如,使用 jquery 或纯 DOM):

$('button').click(changeSimulationSettings)

这更干净,您不会泄漏全局变量。如果您坚持按照自己的方式进行操作,您可以导出changeSimulationSettings到全局并使用您已有的代码。像这样(我不建议这样做):

window.changeSimulationSettings = function() {...
于 2012-12-27T11:30:36.393 回答