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

时间:2016-12-11 14:45:23

标签: javascript php symfony

在我的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

2 个答案:

答案 0 :(得分:0)

我的猜测是你的基础树枝文件(默认为base.html.twig),你在身体结束标记之前包含你的js文件

        {% block javascripts %}
            <script src=.... />
        {% endblock %}
    </body>
</html>

如果是这种情况,您获得的行为是正常的,您应该:

  • 在回复身体之前包括您的JS文件:

{%block body%} {%endblock%}

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

答案 1 :(得分:0)

你不能做像

这样的事情
$.ajax({
    success: function(data){
        $(selector).datetimepicker({
           //.....
         });

         $(selector).autocomplete({
           //.....
         });
    }
})

我也可以帮助你将js代码包装在你加载到

中的部分视图中
$(document).ready(function($) {

});