【发布时间】:2017-03-01 11:52:58
【问题描述】:
我尝试使用 RequireJS 和 AMD 模块定义,并编写了一个模块,以我认为的对象格式完成我的工作。 (我是从 jquery 出来的,还没有学好 OOP javascript)
myModule.js
define([
jquery,
datepicker,
], function ($, datepicker) {
var myModule = {
debug: true,
lang: 'auto',
initModule: function (element) {
myModule.element = element;
},
// ... other methods
}
return myModule;
});
而且效果很好,但是如果我尝试将它用于多个元素/时间,它会覆盖他自己,并且我不能在同一页面中多次使用它。
main.js
requirejs(['MyModule'],
function (MyModule) {
// all the elements on page
$elements = $('.element');
$elements.each(function () {
MyModule.initModule($(this));
});
});
当我在页面上有多个<div class="element"> 时,只有最后一个有效,我认为是因为我的模块是自己覆盖他的。
我尝试添加new MyModule(),但出现错误TypeError: MyModule is not a constructor
我认为我需要添加一个构造函数或其他东西,无论如何都要使用我的模块的一个实例而不是对象(我认为它由 requirejs 预编译并返回准备好工作)。任何帮助都很好,非常感谢!
【问题讨论】:
标签: javascript requirejs amd requirejs-define