RequireJS JQuery ContextMenu issues

RequireJS JQuery ContextMenu issues

本文关键字:issues ContextMenu JQuery RequireJS      更新时间:2023-09-26

我正在制作一个HTML5页面,其Javascript由RequireJS提供支持。我已经使用RequireJS定义了许多依赖项,甚至是那些不支持AMD的依赖项,并取得了成功(我提到这一点是为了说明我的RequireJS配置主要是功能性的)。但是,我在一个特定的依赖项上遇到了一个问题。

我想让Medialize的JQuery ContextMenu插件工作。RequireJS配置的相关部分(或者,至少是我认为相关的部分)是:

require.config({
    paths: {
        'jquery': "jQuery/jquery-latest", //jQuery 1.10.2
        'jquery-ui': "jQuery/jquery-ui-1.10.3",
        'jquery-contextmenu': "jQuery/jquery.contextmenu.r2.packed",
        ...
    },
    shim: {
       "jquery-ui": ["jquery"],
       "jquery-contextmenu": ["jquery"],
       ...
    }
});

然后,在我的代码中,我做的是:

define(["jquery", "jquery-contextmenu"], function ($) {
    $(document).ready(function () {
        $.contextMenu({
            selector: 'a',
            items: {
                "edit": {name: "Edit"}
            }
        });
    });
});

所以,我们的想法是,每当"a"标签被右键单击时,一个上下文菜单应该弹出一个选项,编辑。

相反,在我点击任何东西之前,我得到错误Uncaught TypeError: $.contextMenu is not a function,对我来说,听起来像上下文菜单没有被正确加载/为RequireJS…但我不知道如何解决它。

感谢任何帮助

编辑:增加了一个活塞,但它不是很好地工作。我得到一些超时和RequireJS脚本错误。不知道为什么

你在你的Plunker得到的错误是由于拍打"。js"在你的路径结束。不要这样做。(您没有在问题中显示的代码中这样做,而是在您的plunker中引入了这个问题。)你也做了这个答案所建议的,这是不好的建议,因为你正在使用的垫片jquery-contextmenu返回undefined的模块值。因此,将其赋值给$使$没有定义。

一旦我从你的plunker(我分叉的)中编辑这些问题,你的问题中的错误就不会发生了。