Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 让requirejs在加载模块时运行回调_Javascript_Requirejs_Amd_Js Amd - Fatal编程技术网

Javascript 让requirejs在加载模块时运行回调

Javascript 让requirejs在加载模块时运行回调,javascript,requirejs,amd,js-amd,Javascript,Requirejs,Amd,Js Amd,当我的模块加载时,我需要加载css,所以我使用垫片这样做: function loadCss(url) { var link = document.createElement("link"); link.type = "text/css"; link.rel = "stylesheet"; link.href = url; document.getElementsByTagName("head")[0].appendChild(link); } requ

当我的模块加载时,我需要加载css,所以我使用垫片这样做:

function loadCss(url) {
    var link = document.createElement("link");
    link.type = "text/css";
    link.rel = "stylesheet";
    link.href = url;
    document.getElementsByTagName("head")[0].appendChild(link);
}

requirejs.config({ paths: paths, shim: {
    'easyzoom': {
        'deps': ['jquery'],
        init: function () { loadCss('/lib/easyzoom/css/easyzoom.css'); }
    }}
});
它适用于其他库,如Datatables,因为它们是非Amd模块。但对于Amd模块,requireJs不寻找垫片,因此不会提升我的init函数


有没有办法在加载模块后调用回调?或者加载一个Amd模块,因为它是一个普通的javascript文件来查找垫片?

为一个合适的Amd模块定义一个
垫片(一个调用
定义
)会导致未定义的行为

您可以按如下方式使用:

map: {
    '*': {
        easyzoom: 'easyzoom-intercept'
    },
    'easyzoom-intercept': {
        easyzoom: 'easyzoom'
    }
}
这样做的目的是指定当任何模块(
“*”
)需要模块
easyzoom
,则应加载模块
easyzoom intercept
。但是,当
easysoom intercept
想要加载
easyzoom
时,应该加载模块
easyzoom
。然后创建一个
easyzoom intercept
模块,如下所示:

define([easyzoom], function (ez) {
    loadCss('/lib/easyzoom/css/easyzoom.css');
    return ez;
});

此代码将在加载
easyzoom
后立即执行。

谢谢!对于加载css来说,需要css是很好的,但是你的回答非常适合我的问题。