Классы наследования Dojo, выдающие ошибку при загрузке на construtor

Я пытаюсь получить объект commonBase, который будет расширен многими классами. но во время самой загрузки у меня возникла проблема с construtor во время загрузки моей страницы.

Мой commonBase.js

define(
                ["dojo/_base/declare","dojox/gfx",
                 "dojox/gfx/shape","dojo/_base/lang"
                 ], function(declare, gfx, shape, lang){
                        var commonBase = declare([], {
                                className:"commonbase",
                                x:0,
                                y:0,
                                constructor : function() {
                                        console.log("Created commonBase obj.");
                                 },
                             //some more methods.

                        });
                });

и мой унаследованный класс - shelf.js

define([
        "dojo/_base/declare","dojo/_base/lang",
         "view/commonBase"
        ],

        function(declare, lang, commonBase){
        //var shelf =
        return declare("view.shelf",[commonBase], {
                //className:"shelf",

                constructor: function(){
                        //declare.safeMixin(this,args);
                        console.log("shelf");
                        this.className = "shelf";
                }
        });
});

я получаю Uncaught Ошибка: объявите view.shelf: mixin #0 не вызываемый конструктор. dojo.js:6917

я даже пытался вызвать this.inherited() и объявить.safeMixin(). но тщетно.

Эта ошибка возникает при загрузке страницы. Я понимаю, что это даже не пытается получить доступ к этому объекту. Я вижу в трассировке стека консоли, это происходит во время некоторой фазы guardCheckComplete в загрузчике dojo.

1 ответ

Решение

Вам нужно вернуть commonBase после того как вы определите это с declare, Возвращаемое значение обратного вызова в commonBase.js это то, что возвращается в обратных вызовах, которые require или же definecommonBase,

var commonBase = declare([], {
    className:"commonbase",
    x:0,
    y:0,
    constructor : function() {
        console.log("Created commonBase obj.");
    },
    //some more methods.
});

return commonBase;
Другие вопросы по тегам