【问题标题】:Symfony 4 Javascript function not definedSymfony 4 Javascript函数未定义
【发布时间】:2018-03-17 20:58:18
【问题描述】:

我创建了一个 app.js(和 app.scss)用于 Symfony Encore。

└───assets
    ├───css
    │   └───app.scss
    └───js
        └───app.js

app.js:

/**
 * Name: app.js
 * Desc: Main application javascript
 */

var $ = require('jquery');
require('bootstrap-sass');
require('../css/app.scss');

// Initialize tooltips
$(function () {
  $('[data-toggle="tooltip"]').tooltip()
});

var openLoginModal = function(element){
    $('#login-modal').modal('show');
}

在我的一个模板中,我希望能够设置“onclick”事件来调用 app.js 中定义的“openLoginModal”函数

<a class="btn btn-info navbar-btn navbar-right" data-toggle="login-modal" onclick="openLoginModal(this)">Login</a>

单击锚元素时,控制台中会显示以下错误:

Uncaught ReferenceError: openLoginModal is not defined
    at HTMLAnchorElement.onclick ((index):29)

我假设由于某种原因我无法访问 app.js 中的函数,但我对 webpack 的了解还不够,无法理解为什么会这样

【问题讨论】:

  • 尝试将var openLoginModal 更改为Window.prototype.openLoginModal。我相信您正在尝试访问全局函数,但您的脚本位于 webpack 模块中。
  • 我刚刚在这里回答了这个问题stackoverflow.com/a/49316775/9083959

标签: symfony webpack symfony4 webpack-encore


【解决方案1】:

试试这个

(function ($, window)
{
   window.openLoginModal = function(element){
       $('#login-modal').modal('show');
   }
}(jQuery, window);

【讨论】:

    猜你喜欢
    • 2011-05-21
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多