如何避免在局部视图中加载JavaScript文件?
在我的Symfony项目中,我有两个加载在主页中的JavaScript文件:如何避免在局部视图中加载JavaScript文件?,javascript,php,symfony,Javascript,Php,Symfony,在我的Symfony项目中,我有两个加载在主页中的JavaScript文件: datetimepicker autoComplete 在主页中加载部分视图时,无法从部分视图访问JavaScript文件 如何避免多次加载相同的JavaScript文件 我通过Ajax加载部分视图 //From my partial view $(selector).datetimepicker({ //..... }); $(selector).autocomplete({ //..... })
datetimepicker
autoComplete
在主页中加载部分视图时,无法从部分视图访问JavaScript文件
如何避免多次加载相同的JavaScript文件
我通过Ajax加载部分视图
//From my partial view
$(selector).datetimepicker({
//.....
});
$(selector).autocomplete({
//.....
});
Error: $(...).datetimepicker is not a function
$(...).autocomplete is not a function
我的猜测是,在基本twig文件(默认情况下是base.html.twig)中,在body-end标记之前包含js文件
{% block javascripts %}
<script src=.... />
{% endblock %}
</body>
</html>
{%block javascripts%}
{%endblock%}
如果这种情况下,您的行为是正常的,您应该:
- 在回显身体之前包含JS文件:
- 最好的选择是将您的JS代码从您的分部代码移动到一个单独的JS文件中,您可以在依赖项之后包含该文件
$.ajax({
success: function(data){
$(selector).datetimepicker({
//.....
});
$(selector).autocomplete({
//.....
});
}
})
我还可以帮助您在加载到的部分视图中包装js代码
$(document).ready(function($) {
});
当您说“无法从部分视图访问”时,您的意思是当您尝试从这些文件访问变量时,会出现“未定义变量”类型错误?是的,我得到datetimepicker不是一个函数。自动完成不是一个函数。如何显示部分页面?可以发布基本模板代码吗?您应该尝试将基本模板上的JS代码放入
{%javascript%}
块中,在需要调用JS的页面上,只需调用JS块,然后使用{parent()}
函数调用JS代码。