我正在尝试使用一个将被许多类扩展的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阶段。
答案 0 :(得分:1)
使用commonBase
定义后,您需要返回declare
。 commonBase.js
中回调的返回值是require
或define
commonBase
的回调中返回的值。
var commonBase = declare([], {
className:"commonbase",
x:0,
y:0,
constructor : function() {
console.log("Created commonBase obj.");
},
//some more methods.
});
return commonBase;