假设两个基于模板的小部件从单个基本模块继承属性,如果基于模板的小部件需要使用来自dojo模块的功能,例如“dojo / on”,那么有什么方法可以为每个小部件提供dojo /在每个小部件中不需要它的功能?因为一旦你超越了几个小部件,那么必须确保你需要每一个模块都很烦人。那么我们只能在它们继承的基础模块中只需要它一次吗?
答案 0 :(得分:0)
给出一些简单的按钮示例。
widget_base.js
define([
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/on",
"dijit/form/Button"
], function(declare, lang, on, Button){
return declare(/* path to widget_base */, null, {
constructor: function() {
},
createButton: function() {
if (!this.button) this.button = new Button();
},
hookFunc: function() {
func = function() {/* activity */}
if (!this.button) this.createButton();
on(this.button, /* event */, lang.hitch(this, func));
}
});
})
widgetA.js
define([
"dojo/_base/declare",
/* path to widget_base */
], function(declare, widget_base){
return declare(/* path to widgetA */, widget_base, {
constructor: function() {
this.inherited(arguments);
},
});
})
因此,在widgetA中,您不再需要dojo /。
以下是我的测试用例。
test.js
define([
"doh/runner",
/* path to widget_base */
/* path to widgetA */
], function(doh, widget_base, widgetA) {
doh.register("test", [{
runTest: function() {
wb = new widget_base();
wb.createButton();
},{
runTest: function() {
wba = new widgetA();
wba.createButton();
wba.hookFunc();
}
]);
})