我的app.js中的功能我无法在页面中调用内联

时间:2018-06-22 15:25:07

标签: javascript ejs

import './vendors/jquery';
import './vendors/jquery.tagsinput'; // <--- here i call my tags.input lib
import './carousel';
import './featherlight';
import './top-nav';
etc...

这是我导入我的库和js的app.js文件 然后在这里调用我的app.js文件,然后在我的ejs文件中使用特定的脚本,该脚本在一些ejs变量上循环。但是来自taginputlibrairie的addTag函数似乎未定义。

<script type="text/javascript" src="/app.js"></script>
<% if(creations.Tags) { %>
    <% for(var i=0; i < creations.Tags.length; i++) { %>
        <a><%= creations.Tags[i].TagSpotting.name %> %></a>
        <script type="text/javascript">
        var j = jQuery.noConflict();
        j(document).ready(function() {
            j("#tags").addTag(ejs.render('<%=creations.Tags[i].TagSpotting.name %>'));
        })
       </script>
    <% } %>
<% } %>
</body>

1 个答案:

答案 0 :(得分:0)

我尝试在js文件中传递变量,并在ejs中提醒它。该变量未定义。我将其作为全局变量传递给window,并且工作良好。但是我只是无法更改插件的构建方式。因此,我尝试将其导入脚本标签(如简单插件)中。在我的express文件应用程序中,使用公共文件夹(其中webpack将所有js都编译为app.js)和assetics(其中所有文件都一个一个地编写),因此在ejs中,我添加了一个脚本标签,该标签链接到资产中保留的插件夹。

<script type="text/javascript" src="/javascripts/vendors/jquery.tagsinput.js"></script>

现在它可以按我想要的方式工作,但是我不明白为什么当插件作为app.js在公用文件夹中编译时,它不能正常运行,以及为什么我必须像这样两次调用它。