从Twig调用JavaScript函数

Call JavaScript function from Twig

本文关键字:函数 JavaScript 调用 Twig      更新时间:2023-09-26

我正在Symfony2项目上工作,我想调用JavaScript函数并从Twig传递JSON对象数组(我从控制器获得)。

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

main.js:

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

链接到分支中的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文档的,我猜这就是为什么我没有看到明显的。应该在提问的时候自己发现问题,虽然....

将函数的顺序颠倒:

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

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

解决方案:把你的javascript在你的导入(</body>之前,在javascripts块,例如)或把你的导入页javascript之前(在头部,例如)。