Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免在局部视图中加载JavaScript文件?_Javascript_Php_Symfony - Fatal编程技术网

如何避免在局部视图中加载JavaScript文件?

如何避免在局部视图中加载JavaScript文件?,javascript,php,symfony,Javascript,Php,Symfony,在我的Symfony项目中,我有两个加载在主页中的JavaScript文件: datetimepicker autoComplete 在主页中加载部分视图时,无法从部分视图访问JavaScript文件 如何避免多次加载相同的JavaScript文件 我通过Ajax加载部分视图 //From my partial view $(selector).datetimepicker({ //..... }); $(selector).autocomplete({ //..... })

在我的Symfony项目中,我有两个加载在主页中的JavaScript文件:

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文件:
{%block body%}{%endblock%}

  • 最好的选择是将您的JS代码从您的分部代码移动到一个单独的JS文件中,您可以在依赖项之后包含该文件

你就不能像这样做吗

$.ajax({
    success: function(data){
        $(selector).datetimepicker({
           //.....
         });

         $(selector).autocomplete({
           //.....
         });
    }
})
我还可以帮助您在加载到的部分视图中包装js代码

$(document).ready(function($) {

});

当您说“无法从部分视图访问”时,您的意思是当您尝试从这些文件访问变量时,会出现“未定义变量”类型错误?是的,我得到datetimepicker不是一个函数。自动完成不是一个函数。如何显示部分页面?可以发布基本模板代码吗?您应该尝试将基本模板上的JS代码放入
{%javascript%}
块中,在需要调用JS的页面上,只需调用JS块,然后使用
{parent()}
函数调用JS代码。