当我尝试初始化在不同文件中声明/定义的对象时(但我相信它是通过requireJS加载的),它给了我ReferenceError: myTemplates is not defined
。我有两个文件:main.js
和templates.js
。
在main.js
中(我想从templates.js
加载对象并初始化它,
define(["jquery-ui", "templates"], function () {
var templates = new myTemplates(); // gives ReferenceError
alert( "Never reached this call" + $().jquery);
$(document).ready(function() {
alert( "Never reached this call " + $().jquery);
});
});
在templates.js
中,只有一个名为myTemplates
的对象,其函数名为test
,如下所示
define(["jquery-ui"], function () {
alert( "This alert is raised, proving that jQuery/jQuery UI is loaded in templates.js " + $().jquery);
function myTemplates(){
this.test = function(){
alert('test');
return false;
};
};
});
对于名为requireconfig.js
的requireJS的配置文件,我有
requirejs.config({
"baseUrl": "scripts/lib",
"paths": {
"app": "../app",
"jquery" : [
"//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min",
"jquery-1.10.2.min"],
"jquery-ui" : [
"//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min",
"jquery-ui-1.10.3.min"],
"templates" : "../app/templates/templates"
},
shim: {
"jquery-ui": {
exports: "$",
deps: ["jquery"]},
}
});
requirejs(["app/main", "templates"]);
我很确定在templates.js
中正确加载了jQuery和jQuery用户界面,但我无法理解为什么ReferenceError
在{{1}中初始化myTemplates
}}。有谁可以看看,帮助我。谢谢。
P.S。如果有人想要查看文件夹/文件层次结构,请Github upload of the files/folders is here。
答案 0 :(得分:1)
好的,有两个问题
在templates.js
中,一旦定义了对象或函数,就必须将其返回
function myTemplates(){ ... };
return myTemplates;
在main.js
中,您必须为这些已定义的对象提供引用名称,除非它们不是AMD或在shim config中定义。
define(["jquery-ui", "templates"], function ($ui, myTemplates)
试一试!