使用 Symfony 和 Twig 从 href 中的外部 JavaScript 文件调用函数
Call a function from an external JavaScript file in href with Symfony and Twig
我正在尝试使用 Symfony 和 Twig 从 href 中的外部 JavaScript 文件调用函数。
这是我的 JavaScript 文件 pm.js
:
function test(id) {
alert(id);
}
这是我的模板:
{# templates/pm/pm.html.twig #}
{% extends 'base.html.twig' %}
{% block title %}{{ parent() }} | Private messaging{% endblock %}
{% block body %}
(...)
<a href="javascript:test({{ message.id }});">test</a>
(...)
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src="{{ asset('build/js/pm.js') }}"></script>
{% endblock %}
我该怎么做?感谢您的帮助。
发生这种情况是因为您使用的是已编译的 pm.js
javascript 文件(我猜这就是它位于 build/js
中的原因)。如果你只是将 pm.js
放在你的 public js 文件夹中而不编译它,你的代码将可以正常工作。
你的问题是你编译后的函数不是全局函数。您可以通过多种方式解决这个问题,其中最简单的是:
window.test = function test(id) {
alert(id);
}
只需将函数 test() 分配给 window 变量 window.test
即可。
我正在尝试使用 Symfony 和 Twig 从 href 中的外部 JavaScript 文件调用函数。
这是我的 JavaScript 文件 pm.js
:
function test(id) {
alert(id);
}
这是我的模板:
{# templates/pm/pm.html.twig #}
{% extends 'base.html.twig' %}
{% block title %}{{ parent() }} | Private messaging{% endblock %}
{% block body %}
(...)
<a href="javascript:test({{ message.id }});">test</a>
(...)
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src="{{ asset('build/js/pm.js') }}"></script>
{% endblock %}
我该怎么做?感谢您的帮助。
发生这种情况是因为您使用的是已编译的 pm.js
javascript 文件(我猜这就是它位于 build/js
中的原因)。如果你只是将 pm.js
放在你的 public js 文件夹中而不编译它,你的代码将可以正常工作。
你的问题是你编译后的函数不是全局函数。您可以通过多种方式解决这个问题,其中最简单的是:
window.test = function test(id) {
alert(id);
}
只需将函数 test() 分配给 window 变量 window.test
即可。