我在其他SO帖子中尝试过该解决方案,例如this,但似乎没有用。我总是得到 undefined 。
我在HTML中的配置。
<script type="text/javascript">
var require = {
config: {
'config': { --> if I change this to app, I could read the value in app.js
userId: 1
}
}
};
</script>
<script src="lib/require.min.js" data-main="app"></script>
我的配置模块:
define(['module'], function (module)
{
return {
userId: module.config().userId,
userName: "Test"
}
});
我在我的应用程序中使用配置模块。
require(['modules/config', 'modules/A'], function (config, a)
{
var userId = config.userId; --> undefined
var userName = config.userName; --> Test
});
有什么想法吗?我错过了什么?我使用JQuery 1.12.3和RequireJS 2.2.0。
答案 0 :(得分:0)
将传递给RequireJS的配置编辑为:
var require = {
config: {
'modules/config': {
userId: 1
}
}
};
您的模块ID不匹配。当您需要模块时,使用require(['modules/config', ...
。因此模块名称为modules/config
。但是,在RequireJS配置中,您为名为config
的模块提供配置。因此,当您在module.config()
内使用modules/config
时,RequireJS会在配置中搜索名为modules/config
的模块,但找不到它。所以你得到了不确定。执行前面提到的修复将允许RequireJS找到配置。
或者,您可以使用paths
以名称config
加载模块:
var require = {
paths: {
config: 'modules/config'
},
config: {
config: {
userId: 1
}
}
};
并使用require(['config', ...
。
答案 1 :(得分:-1)
我按照以下技术让它工作。 HTML中包含的文件。它们可以在-index.html
-modules
- myModule.js
-app.js
路径中定义。
目录结构:
<script type="text/javascript">
// require would refer to the require.js global. So i am using requireVar
var requireVar = {
config: {
userId: 1
}
};
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js"></script>
<script src="modules/myModule.js"></script>
<script src="app.js"></script>
HTML (index.html)
define("modules/myModule",function ()
{
return function(){
return requireVar.config.userId;
}
});
文件 myModule.js
require(['modules/myModule'], function (myModule)
{
alert("");
var userId = myModule();
console.log(userId);
});
最后是 app.js
override func viewDidLoad()
{
super.viewDidLoad()
loadingVM = LoadingVM() as LoadingVM
print("LoadingVC")
checkStoredUser()
}