1

嗨,我有我的 js 应用程序,它是用 requirejs 构建的。现在我有来自其他开发人员的外部页面,他可以加载他的脚本、html、css 和其他与我无关的东西。这里我的模块示例将连接到他的页面:

require(['page', 'widgetGame', 'adDynamic'], function (Page, WidgetGame, AdDynamic) {
    function PageExternalGame (params) {
        var params = params || {}; 
        Page.call(this, params); // call super constructor.
    };

    PageExternalGame.prototype.gameLoadingComplete = function() {
        alert(111);
    };

    window.yepiExternalPageGame = new PageExternalGame();
    return PageExternalGame;
});

这里是他的页面示例:

<!DOCTYPE HTML>
<html lang="en"><head>
</head>
<body>
<div id='gameArea'>
<canvas id='canvas0' width='480' height='320' style="position: absolute; "></canvas>
</div>
<script data-main="../../YepiMobileNew/UI/js/pageExternalGame" src="http://requirejs.org/docs/release/2.1.14/minified/require.js"></script>
<script src='js/gamemin.js'></script>
<script>yepiExternalPageGame.gameLoadingComplete()</script>
</body>
</html>

因此,在他的页面中,他将我的对象称为 yepiExternalPageGame,它应该由 requirejs 加载。但是当他调用这个对象时,要求本身已经加载,但是类pageExternalGame仍然没有加载,所以调用时这个对象是不存在的。如何处理?(他的外部脚本也可以调用我的对象)。谢谢。

4

1 回答 1

0

首先,如果您与其他人共享您的 amd 应用程序,最好创建不使用 require.js 的构建,这样您就不会强迫其他开发人员添加另一个库并增加页面大小。你可以用 almond.js 做到这一点

但回到你的问题。

改变

<script>yepiExternalPageGame.gameLoadingComplete()</script>

<script>
    require(['../../YepiMobileNew/UI/js/pageExternalGame'], function() {
        yepiExternalPageGame.gameLoadingComplete();
    });
</script>

这会有所帮助。

于 2014-07-14T08:39:57.187 回答