Bootbox没有使用RequireJS定义

时间:2014-04-03 15:04:54

标签: jquery twitter-bootstrap-3 bootbox

我正在尝试将Bootbox与RequireJS一起使用,但每次出现此错误时:

  

ReferenceError:未定义bootbox

我为RequireJS配置了依赖项:

var
bowerLocal = "../../../bower_components/",
asstsLocal = "../../assets/";

requirejs.config({
    paths: {
        "jquery": bowerLocal + "jquery/dist/jquery.min",
        "jquery.bootbox": bowerLocal + "bootbox/bootbox",
        "jquery.bootstrap": bowerLocal + "bootstrap/dist/js/bootstrap.min",
        "jquery.elevateZoom": bowerLocal + "elevatezoom/jquery.elevateZoom-2.2.3.min",
        "jquery.maskedInput": bowerLocal + "jquery-maskedinput/dist/jquery.maskedinput.min"
    },
    /**
     * Define as dependências de bibliotecas.
     */
    shim: {
        "jquery.bootstrap": {
            deps: ["jquery"]
        },
        "jquery.elevateZoom": {
            deps: ["jquery"]
        },
        "jquery.maskedInput": {
            deps: ["jquery"]
        },
        "jquery.bootbox": {
            deps: ["jquery", "jquery.bootstrap"],
            exports: 'bootbox'
        }
    }
});

require(
    ["jquery", "jquery.bootstrap", "jquery.bootbox", "jquery.maskedInput", "jquery.elevateZoom"],
    function (util) {

bootbox.alert("Hi");
}
...

2 个答案:

答案 0 :(得分:1)

在AMD模式下,你没有在窗口中定义

bootbox 必须自己定义,所以在完成下面的工作之后就可以了。

define(["bootbox"], function(bootbox){
 bootbox.alert("Hello Bootbox");
});

当然路径是在require.config()中定义的,这样可行。

答案 1 :(得分:1)

我认为在@ Pushker的回答中他键入了define,他实际上想要输入require

require(["bootbox"], function(bootbox) { bootbox.alert("Hello Bootbox"); });

(他还为}错误输入{

此外,当具有多个依赖项时,您还应将这些作为require中函数的参数指定,并确保它们与字符串数组参数中的顺序相同。例如。像这样:

require(["jquery", "jquery.bootstrap", "jquery.bootbox", ...], function(jquery, bootstrap, bootbox, ...) { bootbox.alert("Hi"); } ... });

检查我的小提琴是否有用的Bootbox示例:http://jsfiddle.net/bartvanderwal/L1emr4up/