2014-03-28 42 views
0

你好,我希望能够存储在初始化Backbone对象时被调用的requirejs模块。例如:如何将require.js模块存储在Backbone初始化方法中

define(function(require){ 
    var Backbone = require("backbone"), 
    BalanceModule = require("BalanceModule"); 

    return Backbone.View.extend({ 
     initialize: function(){ 
      this.balance = BalanceModule.requestBalance(); 
     } 
    }); 
}) 

我想能够存根BalanceModule,但因为是在初始化方法我不能。

我可以存根初始化方法,但这意味着我有代码在测试中进行测试。

我试着require.undef()模块并加载另一个没有运气。看起来,一旦你有对象初始化它有一个内部引用不能覆盖。

任何想法?

回答

0

您可以通过修改BalanceModule这样的:

define({   
    var BalanceModule = function(){ 

    } 

    return BalanceModule;  
}); 

相反的:

define({   
    var BalanceModule = function(){ 

    } 

    return new BalanceModule();  
}); 

所以,你可以使用这样的:

define(function(require){ 
    var Backbone = require("backbone"), 
    BalanceModule = require("BalanceModule"); 

    return Backbone.View.extend({ 
     initialize: function(){ 
      this.balance = new BalanceModule().requestBalance(); 
     } 
    }); 
}) 
+0

嗯,我想你”再右吧。我发现在AMD模块中返回新东西会创建一个类似单例的东西,而且非常方便。但我可能会在这里开枪自杀。让我有一个想法 – Kstaoo