【发布时间】:2014-08-12 18:17:09
【问题描述】:
这是在 MyWidget.js 模块中声明的小部件类。
define(["dojo/Foo","myapp/Bar"], function(Foo, Bar) { return declare('MyWidget', [], {
postCreate:function() {
var bar = new Bar();
bar.sayHello();
}
})});
在这个理论示例中,“myapp/Bar”是一个通过返回声明调用类似地定义的类。现在假设我通过扩展“myapp/Bar”创建了“myapp/SpecialBar”。
在另一个小部件中,我想告诉 MyWidget 使用“myapp/SpecialBar”而不是“myapp/Bar”,如下所示:
require(["myapp/MyWidget","myapp/SpecialBar"], function(Foo, SpecialBar) {
//Now swap "myapp/Bar" module dependency of "myapp/MyWidget" to "myapp/SpecialBar"
var myWidget = new MyWidget();
});
我知道如何做到这一点。例如,我可以将 Bar 属性添加到“myapp/MyWidget”并分配 Bar 模块的值。这将允许我像这样实例化:new MyWidget({ Bar:SpecialBar })。然而,这似乎太过于仪式了。有没有一种干净的方法来交换 AMD 依赖项而不对模块定义进行任何特殊处理?
【问题讨论】: