我之前从未使用过RequireJS,所以任何帮助都会受到赞赏。 我有以下HTML:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript"
data-main="CustomScripts/market-need"
src="CustomScripts/require.js"></script>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
</head>
<body>
etc...
</body>
</html>
我在CustomScripts/market-need.js
中定义了以下JavaScript。
(function(){
requirejs.config({ baseUrl: 'CustomScripts' });
require(['mndataservice'],
function (mndataservice) {
mndataservice.getListData();
});
})();
以下代码保存在CustomScripts/mndataservice.js
。
define([], function () {
function getListData() {
alert("Hit");
}
return
{
getListData: getListData
};
});
每当我执行上述操作时,mndataservice
在mndataservice.getListData();
中遇到market-need.js
行时都未定义。这在某一点上起作用,我和我都找不到我为我的生活所犯的错误。
答案 0 :(得分:1)
如果你改变:
function (mndataservice) {
mndataservice.getListData();
});
为:
function (mndataservice) {
this.mndataservice.getListData();
});
然后还将mndataservice.js的内容替换为:
var mndataservice = {
getListData: function () {
alert("Hit");
}
};
我认为它会为你解决。
更新
只需将mndataservice.js更改为:
define([], function () {
return {
getListData: function () {
alert("Hit");
}
}
});
应该修复它。不要添加“这个”。在另一个功能中。
更新
跟进你下面的问题,询问为什么你的例子没有用,而我的。你的原因不起作用 - 你的代码实际上是这样做的:
define([], function () {
function getListData() {
alert("Hit");
}
return;
{
getListData: getListData
};
});
请注意return
关键字后面的分号。虽然不在您的代码中,但它会被Javascript Automatic Semicolon Insertion自动插入,导致它返回 undefined 而不是对象。
将开放的大括号移动到与return
相同的行,修复它!