从 Twig 调用 JavaScript 函数

Call JavaScript function from Twig

我正在开发一个 Symfony2 项目,我想调用一个 JavaScript 函数并从 Twig 传递一个 JSON 对象数组(我从控制器获取)。

但是第一个非常简单的测试已经失败,例如:

main.js:

function helloWorld(name) {
   console.log("hello " + name);
}

链接到 twig 中的 main.js 并调用函数:

<body>
    <script>helloWorld("world!")</script>

    {% block javascripts %}
        <script src="{{ asset('js/main.js') }}"></script>
    {% endblock %}
</body>

这会导致 ReferenceError:

"Uncaught ReferenceError: helloWorld is not defined"

我需要做哪些不同的事情才能完成这项工作?

编辑:感谢两位花时间回答的人。所描述的树枝实际上由一堆嵌套的树枝组成,javascript 包含的位置基于 Symfony documentation,我想这就是为什么我没有看到明显的原因。虽然在表述问题时应该自己发现问题....

带有helloWorld定义的脚本放在函数执行之后。这意味着 JavaScript 还不知道函数并触发此错误。

解决方案:将您的 javascript 放在您的导入下方(例如 </body> 之前,在 javascripts 块中)或将导入放在页面 javascript 之前(例如在头部)。

颠倒函数的顺序:

<body>
{% block javascripts %}
    <script src="{{ asset('js/main.js') }}"></script>
{% endblock %}

<script>helloWorld("world!")</script>
</body>