我正在尝试(并且悲惨地失败)仅在元素在屏幕上时才加载js文件。在此示例中,我想仅在联系表单当前在页面上时加载联系人模块。毫无疑问,这是一个实施问题。我可以看到form,js
最后加载了......
我得到的错误是:
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 对最佳实践的理解,我已经更新了当前正常运行的代码库。我知道这是一个时间问题,只是不确定"正确"我猜的方式。