将 jQuery.load 与 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();
    });
});

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

如果我理解你正确,你可以检查$.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
});

最新更新