如何从requirejs模块访问全局变量?

时间:2015-09-14 07:21:31

标签: javascript requirejs

我定义了一个模块(为了易于阅读的代码,我删除了一些不必要的行..)

这是我的game.js

define(['util'], function (util) {
    return {
        createNew : function (setting) {

            var game = {

                intervalTrigger : function () {
                    return window.setInterval(function () {                     
                      score++;//how to read deal with this value?
                    }, 1000);
                }

                }

            };
            return game;

        }
    };
});

并在app.js中使用它:

require.config({
      baseUrl: "./src",
});

requirejs(['util', 'game'],
    function   (util,game) {
        var score = 0;

        function startgame(level) {
            var setting = {};
            var g = game.createNew();
            g.intervalTrigger();
        }
        startgame(0);
 });

在我的情况下,我需要createNew几次,因此得分不能存储在模块中。

了解如何访问模块score中的game

2 个答案:

答案 0 :(得分:0)

创建一个get / set函数并在game.js中公开它:

define(['util'], function (util) {
    var score = 0;
    return {
        createNew : function (setting) {
            var game = {

                intervalTrigger : function () {
                    return window.setInterval(function () {                     
                      score++;//how to read deal with this value?
                    }, 1000);
                }
                getScore: function(){ return score;} //getting the score
                setScore: function(value){score = value;} //setting the score
                }

            };
            return game;

        }
    };
});

现在你可以使用:

        require.config({
          baseUrl: "./src",
    });
requirejs(['util', 'game'],
        function   (util,game) {
            var score = 0;

            function startgame(level) {
                var setting = {};
                var g = game.createNew();
                g.setScore(score); //setting the score
                g.intervalTrigger();
            }
            startgame(0);
     });

答案 1 :(得分:0)

您需要将score定义为实际模块。例如:

define([], function() {
      var gameStats = {
           score: 0
      };

      return gameStats;
});

现在你只需要在游戏统计数据的任何地方注入。