Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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 将jQuery.load与RequireJS一起使用_Javascript_Jquery_Requirejs - Fatal编程技术网

Javascript 将jQuery.load与RequireJS一起使用

Javascript 将jQuery.load与RequireJS一起使用,javascript,jquery,requirejs,Javascript,Jquery,Requirejs,我经常这样编写引导程序小部件: $(window).load(function () { doStuff(); }); 当我编写依赖于要初始化的应用程序其余部分的小部件时,通常会出现这种情况 我最近开始使用RequireJS,但我不知道如何像上面的代码那样附加回调。我查看并尝试了domReady插件,但是它不适合我的用例,因为回调是在DOM就绪时调用的,而不是在加载所有资源时调用的 以下是我迄今为止所尝试的: // Using domReady (main.js): require(['r

我经常这样编写引导程序小部件:

$(window).load(function () {
  doStuff();
});
当我编写依赖于要初始化的应用程序其余部分的小部件时,通常会出现这种情况

我最近开始使用RequireJS,但我不知道如何像上面的代码那样附加回调。我查看并尝试了domReady插件,但是它不适合我的用例,因为回调是在DOM就绪时调用的,而不是在加载所有资源时调用的

以下是我迄今为止所尝试的:

// Using domReady (main.js):
require(['require', 'domReady'], function (require, domReady) {
    'use strict';

    domReady(function () {
        require(['app'], function (App) {
            console.log(window);
            App.initialize();
        });
    });
});

// Using jQuery (main.js)
// Note, this does not work.
require(['jquery', 'app'], function ($, App) {
    'use strict';

    $(window).load(function () {
        App.initialize();
    });
});

鉴于上述情况,使用
$(window.load()
和RequireJS实现的正确方法是什么?

如果我了解您的正确性,您可以检查方法以获得结果;所以,在加载jquery运行之后

jQuery.holdReady(true);
稍后附加处理程序,该处理程序应仅在加载后运行

jQuery(function($) {
    App.initialize();  //will run only after window.load;
}
在加载处理程序设置中:

jQuery(window).load(function () {
    jQuery.holdReady(false);  //fire all domready holded events
});

不完全是。我的问题是将回调传递给$(window).load,它似乎无法按预期工作。您给出的示例延迟了DOM就绪调用,但不等待加载其他资源。是否要等待RequireJS完成加载脚本?运行
jQuery.holdReady(false)
在所有加载的脚本上的RequireJS回调中,或者创建一个小的监视数组,将对其进行检查,以确保load()和回调都被激发,当两者都被激发时,释放domready保持。请稍微处理一下您遇到的麻烦,因为我不确定您如何使用load()。我想等待,如上面的示例所示,在加载所有资源时调用App.initialize,而不仅仅是那些由RequireJS加载的资源。我正在编写一个小部件/模块,它将嵌入到一个更大的应用程序中,小部件依赖于要加载的资源,而不是由RequireJS管理的资源。小部件的现有实现,不使用RequireJS,按预期工作(在$(window.load()中初始化小部件);这就是我的意思,setup watcher,它将在require callback和in window.load()上被调用,两者都应该设置标志,如果标志指示两个事件都被触发,运行onload事件处理程序,它将保证window.load()和所需脚本都被加载。