如何使用具有正确依赖关系的require动态加载js文件?

时间:2015-09-24 17:25:22

标签: jquery requirejs

我正在尝试(并且悲惨地失败)仅在元素在屏幕上时才加载js文件。在此示例中,我想仅在联系表单当前在页面上时加载联系人模块。毫无疑问,这是一个实施问题。我可以看到form,js最后加载了......

enter image description here

我得到的错误是:

Uncaught TypeError: form.renderFeedback is not a function

的application.js

define([
    'jquery'
], function ($) {
    ....
    if ($('#contactForm').length) {
        /**
         * Contact form initialization.
         *
         * @param {object} contact | Contact form module.
         * @returns {object}
         *
         */
        require(['modules/forms/contact'], function (contact) {
            contact.initialize();
        });
    }

    return {
        'initialize': initialize
    };
});

contact.js

define([
    'jquery',
    'jquery.validate',
], function ($, form) {

    var initialize = function () {
        ....
        require(['modules/system/form'], function (form) {
            ....
            form.renderFeedback('error', $element, val);
        });
    };

    return {
        'initialize': initialize
    };
});

form.js

define([
    'jquery'
], function ($) {
    var renderFeedback = function (type, $field, message) {
        ....
    };

    return {
        'renderFeedback': renderFeedback
    };
});

修改

进一步证明它是我&由于缺乏 true 对最佳实践的理解,我已经更新了当前正常运行的代码库。我知道这是一个时间问题,只是不确定"正确"我猜的方式。

0 个答案:

没有答案