我想返回一个函数并在调用模块中进行评估

时间:2012-05-27 17:52:26

标签: javascript requirejs

我不确定为什么这不起作用。我将我的函数包装在一个匿名函数中,并认为在其他地方调用之前不会对其进行评估。但是我收到一个关于“dropchart”没有定义的错误,所以它正在这个模块中进行评估。

define(function() {
  var stage = {
    before: {
      createCanvas: function() {
        return function() {
          before(function(done) {
            this.canvas = new dropchart.Canvas({
              canvas: argsFor.canvas(),
              data: argsFor.data()
            });
            done();
          });
        };
      }
    }
  };
  return stage;
});

这是从其他模块调用的方式:

define(['jquery', 'dropchart', 'argsFor', 'stage'], 
  function($, dropchart, argsFor, stage) {

  var should = chai.should();
  var xAxisSpec = {

    run: function() {

      describe('xAxis', function() {

        stage.before.createCanvas();

        ...

1 个答案:

答案 0 :(得分:1)

stage模块具有argsFordropchart个依赖关系,不是调用模块。

调用模块不能以某种方式使stage模块可用,除非你在stage.before.createCanvas中将它们作为参数传递,或者将它们放在全局范围内,这会破坏require.js的整个点