Dojo继承类在构造函数上加载时出错

时间:2013-11-26 16:14:39

标签: javascript inheritance dojo amd

我正在尝试使用一个将被许多类扩展的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";
                }
        });
});
我得到了 未捕获错误:声明view.shelf:mixin#0不是可调用的构造函数。的dojo.js:6917

我甚至试图调用this.inherited()和declare.safeMixin()。但是徒劳无功。

在加载页面期间发生此错误。据我所知,这甚至都没有尝试访问这个对象。我在控制台堆栈跟踪中看到,它发生在dojo loader的一些guardCheckComplete阶段。

1 个答案:

答案 0 :(得分:1)

使用commonBase定义后,您需要返回declarecommonBase.js中回调的返回值是requiredefine commonBase的回调中返回的值。

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

return commonBase;