有没有办法访问从基础模块继承的dojo功能?

时间:2016-09-27 19:14:55

标签: javascript dojo

假设两个基于模板的小部件从单个基本模块继承属性,如果基于模板的小部件需要使用来自dojo模块的功能,例如“dojo / on”,那么有什么方法可以为每个小部件提供dojo /在每个小部件中不需要它的功能?因为一旦你超越了几个小部件,那么必须确保你需要每一个模块都很烦人。那么我们只能在它们继承的基础模块中只需要它一次吗?

1 个答案:

答案 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();
        }
    ]);
})