使用带有RequireJS的jQuery.load

时间:2013-09-23 23:07:14

标签: javascript jquery requirejs

我经常引导我写的小部件:

$(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();
    });
});

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

1 个答案:

答案 0 :(得分:0)

如果我理解你是正确的,你可以检查$.holdReady()方法来获得结果;所以刚刚加载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
});